You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript调用dsa.msc报错:系统找不到指定文件(HTA环境问题)

解决HTA中VBScript无法定位dsa.msc的问题

问题根源

64位Windows系统里,32位进程会触发文件系统重定向机制:当32位程序访问C:\Windows\System32时,系统会自动把请求转到C:\Windows\SysWOW64目录。而dsa.msc是64位专属的管理单元,只存在于System32中,SysWOW64里没有对应文件,所以32位的HTA调用时会提示找不到文件。

而单独运行的VBS脚本,在64位系统默认会用64位的WScript.exe执行,不会触发重定向,因此能正常找到dsa.msc。

两种可行解决办法

方法1:用Sysnative路径绕过重定向

64位系统提供了Sysnative虚拟路径,32位程序通过它可以直接访问64位的System32目录。把代码里的路径改成:

objShell.Run "C:\Windows\Sysnative\dsa.msc", 1, False

方法2:强制以64位模式运行HTA

  • 右键HTA文件 → 属性 → 兼容性 → 勾选「以管理员身份运行此程序」(如果需要AD操作权限的话),再点击「更改所有用户的设置」
  • 或者直接用64位的mshta.exe启动HTA,命令行执行:
    C:\Windows\System32\mshta.exe "你的HTA文件路径.hta"
    

修正后的完整HTA脚本示例

<script language="VBScript">
Sub LAUNCH_WEBSITE (choice)
    Dim objShell, webPage
    Set objShell=CreateObject("WScript.Shell")
    webPage = ""
    If (choice = 1) Then
        webPage = "https://"
    ElseIf (choice = 2) Then
        webPage = "https://"
    ElseIf (choice = 3) Then
        ' 用Sysnative路径绕过32位重定向
        objShell.Run "C:\Windows\Sysnative\dsa.msc", 1, False
    End If
    ' 避免空webPage触发无效执行
    If webPage <> "" Then
        objShell.Run webPage
    End If
End Sub
</script>

补充:原代码中当choice=3时,会在启动dsa.msc后执行空的webPage,可能导致不必要的弹窗,建议加上判断过滤这种情况。

内容的提问来源于stack exchange,提问作者zwirth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:13:12