当 AC 升高时,$env:path 中的 Powershell systemroot 不同

当 AC 升高时,$env:path 中的 Powershell systemroot 不同

我的 Windows XP SP3 的环境变量出现了奇怪的行为。

当我以管理员身份登录时,%SystemRoot%PATH 中的字符串被替换为C:\WINDOWS,变量“SystemRoot”的值为C:\WINDOWS

但是,当我以任何非管理员用户身份登录时,%SystemRoot%尽管变量“SystemRoot”具有与管理员帐户相同的值,但实际上它仍保留在 PATH 中。

以普通用户身份运行 PowerShell:

PS C:\Users\vic> $env:path(进入)

%SystemRoot%\system32\WindowsPowerShell\v1.0\;C:\Program Files\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

以提升的权限运行 PowerShell(我右键单击,run as admin):

PS C:\Windows\system32> $env:路径

C:\Windows\system32\WindowsPowerShell\v1.0\;C:\Program Files\AMD APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\ System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

Windows 中的环境路径:

C:\Program Files\AMD APP\bin\x86;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SystemRoot%\System32\WindowsPowerShell\v1.0;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static

为什么?

答案1

这可能与 Windows XP、Windows 7 和其他几个系统中的已知错误有关。(根据现有文档,它不会影响 Windows 8 或更高版本,或者在 Windows 8 或更高版本中未出现过。)

该错误记录在Microsoft 知识库文章 #329308环境变量可能无法将 %APPDATA% 扩展至应用程序文件夹)。 它还被 NIST 国家漏洞数据库记录为中等漏洞,因为CVE-2007-6753. CVE 条目中引用的其中一条参考资料是ACROS 安全博客上的一篇文章,声称这个问题可能和 2003 年一样老了,甚至比 2003 年还要老。

尽管引用的知识库文章特别提到%APPDATA%,但该错误会影响所有“变量内的变量”,并且当它出现在变量中时尤其会成为安全问题%PATH%

我不知道为什么提升权限会对这个错误的表达方式产生影响。根据我的经验,这个问题的重现通常相当不稳定。但变量内的变量没有得到适当扩展的一般情况这是一个已知的错误,所以我不会花太多时间去尝试实际解决它。

我知道的唯一解决方法是编辑受影响的变量,以便明确定义路径,而不是依赖于其他变量。在 中看到“%SystemRoot%”的任何地方%PATH%,将其替换为 的精确值%SystemRoot%。尽可能对环境中的任何其他嵌套变量执行相同操作 - 尤其是当这些变量定义文件/文件夹路径时。

相关内容