【问题标题】:Run a file within exe with vbs使用 vbs 在 exe 中运行文件
【发布时间】:2015-03-11 08:42:31
【问题描述】:

我正在尝试使用启动器在 exe 文件中运行 hta。 启动器正在选择 system32 mshta 来打开 hta,因为即使在 64 位系统上,Windows 也默认为 32 位 mshta。

我是这样弄的:

CreateObject("WScript.Shell").Run "C:\Windows\System32\mshta.exe page.hta"

这个不行,我也试过

CreateObject("WScript.Shell").Run "C:\Windows\System32\mshta.exe " & CreateObject("WScript.Shell").CurrentDirectory &"\page.hta"

如果我不打包也可以。

我已经制作了一个 hta、一个带有 hta 命令的 txt、一个启动器以确保 hta 是通过 system32 打开的,以及一个用于脚本工作的 dll。我需要将所有这些都放在一个可点击的文件中,这样我的用户就不会搞砸了。

【问题讨论】:

  • “我需要将其作为单个可运行文件”是什么意思?请详细说明你的目标!
  • 我已经制作了一个 hta,一个带有 hta 命令的 txt,一个启动器以确保 hta 是通过 system32 打开的,以及一个用于脚本工作的 dll。我需要将所有这些都放在一个可点击的文件中,这样我的用户就不会搞砸了。

标签: dynamic vbscript exe


【解决方案1】:

你的启动器是 32 位的,所以你在那个子系统中。

64 位程序和 32 位程序都认为它们在 System32 中。

要从 32 位强制 64 位访问 System32,请使用文件夹名称 SysNative。

c:\windows\sysnative\mshta.exe

将从 32 位环境运行 64 位 HTA(在 64 位环境中会导致错误)。

在 32 位中

c:\windows\system32 = C:\Windows\SysWOW64
c:\windows\sysnative = C:\windows\system32

64 位

c:\windows\system32 = C:\Windows\system32
c:\windows\sysnative = Error

【讨论】:

  • 我可能还不够清楚。我使用的是 64 位系统,并且我已经设置了启动器,因此正在使用的 mshta 已经是正确的。我的问题是,当我用 iexpress 打包时,我无法再打开 hta
  • 我已经给你解释过了。你说得够清楚。我的 cmets 仅适用于 Windows 64。它们在 Windows 32 上没有任何意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 2019-12-25
相关资源
最近更新 更多