由于 HTA 应用程序托管在 MSHTA.exe 中,因此如何提供清单?另外,我认为提供 MSHTA.exe.manifest 可能会破坏其他 HTA 应用程序?

有帮助吗?

解决方案

在 Vista+ 上,MSHTA.exe 有一个嵌入式清单,它优先于外部清单,因此您的建议不是一个选项。

在 XP/2003 上,是的,您的建议会起作用,尽管形式不好,就像在 System32 中删除文件以修改系统二进制文件的行为一样(特别是确保您在清单中放入的任何注册都是您作为对象的对象)只有一个需要关心)。

在 Win2003 及更高版本上可用的正确解决方案是使用 Microsoft.Windows.ActCtx 对象在给定显式清单引用的情况下实例化您的对象。

例如:

var actCtx = WScript.CreateObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "myregfree.manifest";
var obj =  actCtx.CreateObject("MyObj");   

也许,如果这也必须在 XP 上工作,那么您可以采取的路径是两种解决方案的组合。

其他提示

编辑:我的答案是错的,但我会离开这里,以避免任何类似错误的答案:)


如果你的问题是,你可以访问COM对象不注册它的机器上,那么我认为答案是肯定的试探。然而,你需要做的是非常巨大的将意味着实施了大量的低级别的代码,大多数开发工具为你作为理所当然的事(德尔福,.NET,JAVA)的工作。你会需要的接口直接与DLL(像你这样一个正常的DLL),查询其接口和调用你的方法。

如果您有C,C ++知识,COM的方式从这些语言的访问会给你一些指点。

抱歉,我不能是任何更多的帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top