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

为什么VBScript为HTA文件中的%ProgramFiles%系统变量返回的值与VBS文件中的不同?,vbscript,hta,Vbscript,Hta,在64位PC上,VBS文件中的以下代码将按预期返回“C:\Program Files” Dim oShell Set oShell = CreateObject("WScript.Shell") MsgBox oShell.ExpandEnvironmentStrings("%ProgramFiles%") 但是,当相同的代码放在HTA文件中时,它返回“C:\ProgramFiles(x86)”。以下是HTA文件 <html> <head> <title&

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

Dim oShell
Set oShell = CreateObject("WScript.Shell")
MsgBox oShell.ExpandEnvironmentStrings("%ProgramFiles%")
但是,当相同的代码放在HTA文件中时,它返回“C:\ProgramFiles(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>
有人能解释为什么会这样吗


谢谢。

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

感谢您的响应。我想一定是这样的。
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)