Windows XP上的Microsoft.Windows.ActCtx

这些天我非常忙于开发activex / com应用程序。 我们的一些客户正在严格限制的Windows环境中工作。 所以我决定让我的应用程序无法使用。 我发现genman32.exe可以轻松创建清单(也是mt.exe很有用)。 一切都很顺利但是当我试图从wsh(vbs或js)执行我的应用程序时 – 由于应用程序在com服务器上运行,因此我的情况是有义务的 –

set o = CreateObject("Application.Interface") // No object reference 

因为“CreateObject”看起来注册并且没有注册入口:)然后我搜索并找到了“actctx”的东西。 在dot.net环境中实现非常容易。 但我必须从wsh(vbs或js)执行我的应用程序;)所以我决定搜索一下然后找到

 set o = CreateObject("Microsoft.Windows.ActCtx") o.manifest = "L:\\Application.dll.manifest" set app = o.CreateObject("Application.Interface") app.Launch() // which is my executing function 

问题 – 即使在SP3中,Windows XP的机器也无法使用“Microsoft.Windows.ActCtx”界面 – 微软从未放过任何简单的问题 – 这个问题有什么解决方案吗? 您是否知道创建该接口的任何其他方法或Windows更新?

    我弄明白了我的清单问题。 我将与其他可能遇到类似问题的人分享。

    请注意,在使用“Microsoft.Windows.ActCtx”接口时,必须在清单中指定progid =“”属性,否则会得到ActiveX组件无法创建对象错误。

      

    以下清单示例应该让您启动并运行:)

      < ?xml version="1.0" encoding="UTF-8" standalone="yes"?>         

    如果Microsoft.Windows.ActCtx是可再发行的,则必须有某种方式才能进入机器并进行全局注册。 如果你有权在机器上注册这个,你不能只是注册Application.Interface吗? 如果您正在处理受限制的环境……那么您必须处理已有的环境。

    看起来您正在使用wsh脚本来启动您的应用程序。 为什么不写一个存根来在本机代码或托管代码中启动应用程序(在那里你可以使用清单),然后调用那个存根?