注册免费Com和dll清单
我正在设置注册免费的COM,但有一个小问题,我的另一个COM对象可能是客户端.
App.exe —–> COM Server / Client dll(已注册或不注册)——–> COM Server DLL(未注册) 我的问题是,是否可以为第二个dll(COM Server / Client dll)创建一个清单?我无法控制可执行文件,但是如果我这样做,如果我为可执行文件创建了客户端清单,并且为COM服务器dll创建了一个服务器清单. 这是中间dll的清单文件.我尝试嵌入它并尝试外部.仍然不行. <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="COMCliSer.dll" version="1.0.0.0" /> <dependency> <dependentAssembly> <assemblyIdentity name="COMSer.dll" version="1.0.0.0" /> </dependentAssembly> </dependency> </assembly> 进一步的调查,只要中间的dll也是免费注册,我可以得到这一切工作,并且exe有一个应用程序清单.一旦我注册中间的dll,并放弃应用程序清单(我没有控制什么exe将使用我的dll),整个事情停止工作. 如果exe没有明示,那么dll的清单不被考虑.我可以通过设置一切工作来证明这一点.然后把错误放在装配单上.这会弹出通常的消息: 无法创建进程:由于应用程序配置不正确,此应用程序无法启动.重新安装应用程序可能会解决此问题. 如果我删除应用程序清单,应用程序将加载(尽管CoCreateInstance失败,因为不考虑依赖关系)
只需向服务器/客户端dll的清单添加指向com服务器dll的程序集依赖关系.
请记住,程序集清单与“应用程序”清单不同:程序集清单描述一个程序集:给出一个名称,并列出其dll. 所以归根结底,你会有: > app.exe,具有外部(app.exe.manifest)或嵌入式RT_MANIFEST,描述了一个名为“acme.clientserver”的程序集的依赖关系 在技??术上可以通过dll的名称调用程序集,并且将程序集和dll清单合并在一起 – win32加载程序支持这一点,但是在程序清单中有效的某些设置在程序集清单中无效,这可能导致结果装配失败.它也使得数字签名非常困难. WRT的exe必须有一个清单:通常exe的清单设置进程默认激活上下文.我不是100%肯定当EXE没有清单时窗口的行为,但我很确定,dll中的清单仍将被处理. 这意味着问题归结为在CoCreateInstance中缺少隔离支持 – 由于某些原因 – 默认情况下,CoCreateInstance仅查看reg free com条目的默认激活上下文. 覆盖它的方法是使用Activation Context API手动构建您自己的激活上下文 基本的方法是调用: > CreateActCtx – 从您的dlls清单创建激活上下文. 您可以添加/ D ISOLATION_AWARE_ENABLED来包装由激活上下文影响的大多数Windows调用,由于某种原因CoCreateInstance不被包装:/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 什么时候在Windows中需要“extern C”?
- windows-7 – Windows 7 RC是否在虚拟机上运行?
- Windows模拟UNIX atoh()函数
- windows – 使用VBScript清除剪贴板
- windows下nginx的安装及使用
- ESXI使用记录---6.7搭建HA
- windows – 使用Task Scheduler运行时,我的PowerShell脚本不
- Windows安装程序 – 在CMake CPack NSIS中创建Windows桌面图
- 身份验证 – Windows Server 2012 R2 – 证书开始工作之前的
- windows – 在我的网络上找到未使用的IP地址的任何方法?
- windows-server-2008 – 针对AD Server 2008和20
- 在Windows上使用perl脚本而不安装ActivePerl?
- virtualbox – 未找到GENY MOTION虚拟引擎错误
- winapi – Win32:如何在窗外画画?
- 部署 – 使用pm2部署时的Windows问题
- windows-server-2003 – Windows Server 2003 –
- windows – 如何仅为当前OS会话设置变量
- 窗口 – 可以判断一个进程中是否已经调用了WSASt
- .net – 开发/调试Windows服务的最简单方法
- 在Windows 7上安装和配置LDAP(AD LDS)