我怎样才能弄清楚什么是对我的 PATH 变量的影响?

我怎样才能弄清楚什么是对我的 PATH 变量的影响?

简而言之:我的 PATH 环境变量有时只能在提升的会话中使用,有时则没问题;如何找出非管理员会话中损坏它的原因并防止它在将来发生?

例如,我启动 cmd.exe(或 PowerShell 提示符)并尝试 ping 服务器,然后收到可怕的'ping' is not recognized as an internal or external command, operable program or batch file.消息。如果我尝试使用完整路径进行 ping,即c:\windows\system32\ping.exe,它就可以正常工作。

问题是我的 PATH 是空的。即:

C:\Users\matt>set path
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

C:\Users\matt>path
PATH=(null)

如果我打开提升的提示(即右键单击并“以管理员身份运行”),一切都会正常工作,并且我的 PATH 变量符合预期。

我已经知道路径长度限制为 2047 个字符。事实上,这原本是我的问题,后来我改正了。但对于非提升会话,我仍然会遇到零路径问题。普通会话有时有效,有时无效,但提升会话始终有效。

终止 explorer.exe 进程并通过任务管理器重新启动它有时会重置正常会话的路径,但有时我必须完全重新启动。

这种情况每周都会发生几次。我没有在事件日志中发现任何确凿的证据,甚至没有任何可疑的东西,而且很难猜测是什么导致了这个问题,因为当它发生时我不一定能注意到它。

这台计算机是域的成员,如果有区别的话。

我如何监视我的 PATH 变量并检测哪个进程和/或程序正在修改它? 这似乎不是一个持久的变化,因为注册表项不受影响,但显然有些东西在半随机地破坏非管理员会话,而且我没有进一步缩小根本原因的想法。

相关内容