1

在 64 位 PC 上,VBS 文件中的以下代码将按预期返回“C:\Program Files”。

Dim oShell
Set oShell = CreateObject("WScript.Shell")
MsgBox oShell.ExpandEnvironmentStrings("%ProgramFiles%")

但是,当将相同的代码放在 HTA 文件中时,它会返回“C:\Program Files (x86)”。以下是 HTA 文件。

<html>
<head>
    <title>HTA Test </title>
    <HTA:APPLICATION
        ApplicationName = "Test App"
        ID      = "test"
        WindowState = "normal "
        SysMenu = "yes "
        Scroll      = "no"
        Version = "1.0" />
</head>

<script language="VBScript">
    Dim oShell
    Set oShell = CreateObject("WScript.Shell")
    MsgBox oShell.ExpandEnvironmentStrings("%ProgramFiles%")
</script>
<body>
</body>
</html>

在 PC 上,存在以下 2 个系统变量。

ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)

谁能解释为什么会这样?

谢谢。

4

1 回答 1

2

如果您看到 HKEY_CLASSES_ROOT\htafile\Shell\Open\Command(用于打开 hta 文件)将看到操作系统默认调用 32 位版本的 MSHTA.exe,因此,对于 32 位文件,%programfiles% 返回值%programfiles(x86)%

于 2013-10-29T13:35:04.170 回答