【发布时间】:2014-11-23 16:59:14
【问题描述】:
我已经成功地使用 C++ 和 C# 使用清单文件(即早期绑定)使无注册 COM 工作。我现在正在尝试使用后期绑定来完成这项工作。经过大量网络搜索后,我发现的技术似乎是使用“Microsoft.Windows.ActCtx”。
我用来测试这一点的一个示例是 MS 的“基于 COM 的组件的免注册激活”,位于 http://msdn.microsoft.com/en-us/library/ms973913.aspx 以生成 SideBySide 示例。然后我尝试使用脚本语言;然而,VBScript 和 Python 都以同样的方式失败(也尝试过 VBA)。 VBScript 示例如下:
Set actctx = CreateObject("Microsoft.Windows.ActCtx")
actctx.manifest = "C:\test\client.exe.manifest"
Set SBSObj = actctx.CreateObject("SideBySide.SideBySideClass")
wscript.echo SBSObj.Version
使用类似 SysInternals 的“进程监视器”,您可以看到运行以下命令 (Windows 7 x64):
C:\Windows\SysWOW64\cscript.exe //Nologo C:\test\VBRegFreeTest.vbs
似乎可以通过加载清单来工作,并尝试开始寻找等效的注册表调用,但找不到它们。所以它似乎部分工作。我还将 wScript.exe 复制到本地目录,以排除运行应用程序和清单文件的目录问题。
我已阅读 Microsoft.Windows.ActCtx on Windows Xp 并在清单中包含“prodID”,但它仍然失败。清单文件与 C++ 和 C# 示例一起正常工作。
我不禁觉得“Microsoft.Windows.ActCtx”有问题。这方面的文档非常有限。任何有关使用 Python 或 VBScript 清单文件的帮助将不胜感激。我很想知道是否有人让“Microsoft.Windows.ActCtx”工作。
【问题讨论】:
标签: c# python c++ windows vbscript