在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)
任何人都可以解释为什么会这样吗?
感谢。
答案 0 :(得分:2)
如果你看到HKEY_CLASSES_ROOT \ htafile \ Shell \ Open \ Command(用于打开hta文件)会看到操作系统默认调用32位版本的MSHTA.exe,因此,对于32位文件,%programfiles%返回%programfiles(x86)%
的值