是否有可能在winform上使用ocx(ActiveX控件)(可能是以编程方式添加它)而没有先注册regsrv32的ocx?使用OCX而不注册它
我想要实现的是启用xcopy安装。我已经从我的开发机器生成了“AxInterop。.dll”和“Interop。 .dll”文件。
我已经看到调用COM DLL没有先注册它的可能性(ProSysLib,根据作者,但我还没有测试过),因为ocx也是基于COM的,因此我假设必须也有办法做到这一点。
是否有可能在winform上使用ocx(ActiveX控件)(可能是以编程方式添加它)而没有先注册regsrv32的ocx?使用OCX而不注册它
我想要实现的是启用xcopy安装。我已经从我的开发机器生成了“AxInterop。.dll”和“Interop。 .dll”文件。
我已经看到调用COM DLL没有先注册它的可能性(ProSysLib,根据作者,但我还没有测试过),因为ocx也是基于COM的,因此我假设必须也有办法做到这一点。
是的,这可以做到。您必须假定您的应用程序将只部署在Windows XP(或Windows Server 2003)或更高版本上,然后您可以使用所谓的“免注册COM”来实现此目的。
基本上你要做的是为ActiveX控件DLL创建一个清单文件,这样Windows加载程序& COM DLL就知道它的注册是什么,而不必将它放到注册表中。
什么就做什么的演练是本文对MSDN中: Registration-Free Activation of COM Components: A Walkthrough
“第6步”和“第7步”该文章中包含一切您需要。
我刚刚在我自己的一个C#程序中使用Microsoft ActiveX网格控件(旧的“MS Flex网格”)进行了试用,它工作得很好。确保为应用程序和COM DLL创建清单文件,并在正确的位置替换适当的GUID。如果您没有它们,您可能需要使用OLEVIEW从ActiveX DLL中挖掘出正确的ID。
被警告,明显使用.NET中创建的COM组件使用无注册表的COM可以随机导致Windows XP上的崩溃!
链接:Stackoverflow question我在那里学到了这个问题,微软知识库article在那个问题中提到。有一个修补程序,但你不能重新分配它。
它在Visual Studio中甚至更简单:只需到References,找到由ocx创建的位置(应该有2个,AxSomething和Something),并为它们设置Isolated:true属性。没有显示,没有代码。 你现在应该分发包含ocx的dll文件。在您的研发机器上,可以注册ocx。
10小时搜索如何与OCX Win7上没有对其进行注册和管理员权限运行VB6应用程序后,我发现这里几个点击的解决方案:http://mmm4vb6.atom5.com/yes-update-0-12-5479.html#c
需要检查嵌入清单,使其工作。作为魅力工作!
我在这里发布解决方案,因为我在这里也找到了这个问题。
啊,最后,好吧,很难谷歌这样的解决方案。非常感谢 – faulty 2008-10-25 03:16:00
+1 ..与@faulty相同我刚刚被分配为针对COM组件构建应用程序.. – chakrit 2008-12-30 09:47:39
请注意,它可以随机导致Windows XP上的崩溃::(http://stackoverflow.com/ question/617253/is-anyone-successful-using-registration-free-com-with-net-components – MarkJ 2009-03-17 21:49:14