为什么VBScript在HTA文件和VBS文件中为%ProgramFiles%系统变量返回不同的值?

时间:2013-10-29 12:35:51

标签: vbscript hta

在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)

任何人都可以解释为什么会这样吗?

感谢。

1 个答案:

答案 0 :(得分:2)

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

的值