.net – 在Win7中使用没有注册表的COM Exe Server
我有一个现有的COM Exe Server,以及调用它的VBA或.NET代码.我们希望无需安装或修改注册表即可使其工作,以便其计算机上不是管理员的其他用户可以使用它.
我们假设无法更改/修改COM Exe Server(昂贵). 问题1: 问题2: 问题3: var factory = UnsafeNativeMethods.CoGetClassObject( clsid,RegistrationClassContext.LocalServer,IntPtr.Zero,typeof(UnsafeNativeMethods.IClassFactory).GUID) as UnsafeNativeMethods.IClassFactory; factory.CreateInstance(null,ref iid,out obj); 解决方法
是. CoRegisterClassObject就足够了(没有注册表),可以让任何使用CLSCTX_LOCAL_SERVER调用CoCreateInstance的客户端可以使用out-of-proc对象.但是,您可能遇到编组调用问题,因为未注册COM代理/存根DLL和/或类型库.因此,IDispatch,IOleCommandTarget等众所周知的接口将被编组而不会出现问题,但任何自定义接口都将失败. 但是,还有其他方法可以让客户端使用EXE服务器.仅举几例:
我只能想到调用CoGetClassObject或CoCreateInstance(需要CLSCTX_LOCAL_SERVER标志)来验证.
那真是怪了.如果COM标准编组程序找不到接口的代理/存根工厂,则它将返回0x80040155(REGDB_E_IIDNOTREG),但IClassFactory不需要自定义代理.您确定IClassFactory的C#定义中有正确的GUID吗?那应该是Guid(“00000001-0000-0000-C000-000000000046”). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows 8显然从压缩的HTTP响应中删除内容编码头
- windows – 是否有Microsoft认证的SSH服务器?
- windows-server-2008-r2 – 为什么我不能使用Domain Admins
- window open 打开窗口最大化
- winforms – Windows服务的运行时调试技巧?
- windows-8 – 如何在Windows 8 Store HTML / JS应用程序中检
- windows – 关于目录中的单点和双点
- powershell – 如何更改我键入的字符串值的颜色?
- 如何在Windows 10 Enterprise上运行应用程序作为shell替换
- Windows上的mysql导入