使用OCX而不注册它

fau*_*lty 29 .net com ocx regfreecom

是否可以在winform上使用ocx(ActiveX控件)(可能以编程方式添加它),而不首先在regsrv32中注册ocx?

我想要实现的是启用xcopy安装.我有从我的开发机器生成的"AxInterop .dll"和"Interop .dll"文件.

我已经看到了在没有先注册它的情况下调用COM dll的可能性(ProSysLib,据作者说,但我还没有测试过),因为ocx也是基于COM的,所以我认为必须有一些方法来也这样做.

Tim*_*ley 32

是的,这可以做到.您必须假设您的应用程序将仅部署在Windows XP(或Windows Server 2003)或更高版本上,然后您可以使用所谓的"免注册COM"来实现此目的.

基本上你要做的是为ActiveX控件DLL创建一个清单文件,这样Windows加载器和COM DLL就知道它的注册是什么,而不必将它放在注册表中.

有关如何操作的演练,请参阅MSDN上的这篇文章: COM组件的免注册激活:演练

该文章中的"第6步"和"第7步"包含您需要的所有内容.

我刚刚在我自己的一个使用Microsoft ActiveX网格控件(旧的"MS Flex Grid")的C#程序上试过这个,它运行得很好.确保为应用程序和COM DLL创建清单文件,并在适当的位置替换相应的GUID.如果您没有方便,可能需要使用OLEVIEW从ActiveX DLL中挖掘出正确的ID.


Mar*_*rkJ 5

请注意,在.NET中创建的COM组件显然使用无注册表的COM可以随机导致Windows XP崩溃!

链接:Stackoverflow问题我从中学到了这个问题,在那个问题中提到了Microsoft知识库文章.有一个修补程序,但不允许您重新分发它.