VBScript 获取临时文件夹

VBScript get temp folder

fso.GetSpecialFolder(2) 正确 returns 我的临时文件夹,当 运行 来自 VBS 文件时。但是,当 运行 来自 Autodesk Revit 日志文件(历史上一直与 VBS 兼容)时,我会在 Temp 之后返回正确的路径和 GUID。我以前从未见过这个,我不确定这是否可能是 Windows 10 的较新版本中的一个已知问题(我测试这个已经大约三年了),或者这更可能是 Autodesk 实施的问题VBScript 支持?我怀疑是后者。 这就提出了一个问题,是否有另一种在 VBScript 中获取完整临时路径的好方法? 我可以使用

Dim strUser : strUser = CreateObject("WScript.Network").UserName
"C:\Users\" & strUser & "\AppData\Local\Temp"

我已经很久没玩 VBS 了,我不记得是否有更好的答案,或者这是一贯可行的方法。而且,我最想知道的是 .GetSpecialFolder(2) 是否在 Windows 中以某种方式被破坏,或者只是被 Au​​todesk 破坏。

在不同的环境/脚本主机上使用不同的值不是合乎逻辑的吗?

GetSpecialFolder(2) 只是 return 名为 TMP 的进程环境变量。对该变量 的任何更改-这是完全合法的-,都会影响 GetSpecialFolder(2) returns.

的值

GetSpecialFolder method

Constant: TemporaryFolder
Value: 2
The Temp folder is used to store temporary files. Its path is found in the TMP environment variable.

因为 GetSpecialFolder(2) 总是 return 一个现有的目录路径,我可能会认为这是环境的意图而使用它; Autodesk Revit.

除此之外,如果我想要通常的临时路径,我会使用类似下面的东西,因为即使它们很少见,也有系统驱动器不是 C: 的安装。依靠 %localappdata% 以这种方式更有意义。

Set WshShell = CreateObject("Wscript.Shell")
TempPath = WshShell.ExpandEnvironmentStrings("%localappdata%\Temp")