【发布时间】:2015-03-10 09:40:19
【问题描述】:
我正在尝试让 vbScript 在 hta 中工作。
vbs在我独立运行时工作正常,但是当我尝试在hta中使用它时,它无法加载dll文件。
我曾尝试使用 regasm / codebase 来注册 dll,但这也无济于事。使用 regsvr32 不是一个选项,因为它不能在计算机上以管理员身份运行。
我正在使用ExecuteGlobal 将 vbs 文件放入 hta,但我也尝试过创建一个仅从 hta 运行 vbs 的命令,但仍然失败。
我是否忽略了一些琐碎的事情?
【问题讨论】:
-
如果您使用的是64位操作系统,请检查正在执行的
mshta.exe是32位还是64位版本,并且它与组件和组件注册匹配 -
在使用 syswow64 和 system32 文件夹时都会发生错误。
-
好吧,由于某种原因,即使我指定了要运行的 system32,它仍在运行 syswow64。我现在可以通过 cmd 运行它来做到这一点,这是否意味着我必须有另一个包装器,告诉它使用 system32 而不是 syswow64 打开我的 hta,如果我希望我的用户能够只单击一个图标来运行它?
-
执行
ftype htafile可以看到默认的handler放在syswow64中。您将需要一个包装器,或者更改注册表,或者更好,使用与包装器相同的 hta,让您的 hta 确定它是在 32 位还是 64 位版本中运行,如果它是错误的,则启动正确的版本并自行结束. -
看起来在这种情况下我将不得不使用包装器,据我所知,Windows 在识别哪个 mshta.exe 正在运行时存在一些问题,因为它们的名称相同。我在另一个 vbs 中简单地调用了
%WinDir%\System32\mshta.exe c:\page.hta