1

我有一个需要以 32 位运行的 vbs 文件,即使我运行的是 Windows 7 64 位。我可以使用命令启动这个文件

C:\Windows\SysWOW64\cscript.exe my-file.vbs

这很好用,但它给我留下了一个多余的命令提示符窗口,我每次都必须手动关闭。将这个 vbs 文件作为启动项运行也很麻烦。

有没有办法在后台启动我的 32 位 vbs 文件?

4

3 回答 3

3

尝试解决 64 位问题,如果可行,您可以将其与其他答案结合使用

编辑:这里有一个关于 32/64 位问题的更深入的问题

如何检查 wscript/cscript 是否在 x64 主机操作系统上运行?

这里是修改后的版本,应该确保脚本在 64 位平台上运行

On Error Resume Next
Dim WshShell, OsType
Set WshShell = CreateObject("WScript.Shell")
OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
If OsType = "x86" then
  wscript.echo "Windows 32bit system detected"
else
  wscript.echo "Windows 64bit system detected"
  If InStr(LCase(WScript.FullName),"system32") Then 
    CreateObject("WScript.Shell").Run """%systemroot%\SysWOW64\wscript.exe"" """ & WScript.ScriptFullName & """" 
    Wscript.Quit 
  End If 
end if

Msgbox("I ran..")
于 2012-05-23T11:24:49.990 回答
1

如果您需要使用 cscript,恕我直言,这是一个很酷的解决方案

Const HIDDEN_WINDOW = 0

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW

Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")

objProcess.Create "Cscript.exe h:\Script\Test1.vbs", null, objConfig, intProcessID
于 2012-05-23T10:47:21.117 回答
0

如果您可以使用 wscript,您可以执行以下操作,这是最简单的方法

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "Wscript.exe h:\Script\Test1.vbs"

实际上,您可以将其作为单行来执行(我是 Ruby 人 8>)

CreateObject("Wscript.Shell").Run("Wscript.exe h:\Script\Test1.vbs")
于 2012-05-23T10:42:44.410 回答