为什么CMD不继承这台机器上的环境变量?

Pau*_*ner 19 windows command-line environment-variables windows-10

无论出于何种原因,在特定机器上,我的 cmd 进程不会从启动它的父进程继承其环境变量。相反,它恢复到“默认”环境设置,就像通过资源管理器启动一样。

演示这一点的一种简单方法是打开命令提示符,然后运行set Path=C:\Windows\System32\,然后cmd从同一提示符启动另一个进程。然后可以通过运行查看该变量set Path

应该是“C:\Windows\System32”(从启动过程继承)但在我的机器上它恢复到我的环境默认值。

您应该会看到如下内容: 工作命令提示符

我得到以下信息: CMD 违反规则

什么可能导致这种情况?它似乎打破了关于环境变量如何工作的所有规则,它只影响这台机器。

Pau*_*ner 26

该问题是由命令处理器的 AutoRun 设置引起的。命令行的这个小“功能”允许您配置一个脚本,以便在每次 CMD 进程启动时运行。

就我而言,某些东西(可能是 NVMW 的安装)注册了一个脚本,该脚本分配了一个全新的Path值,完全忽略了任何现有值。

删除该HKCU\Software\Microsoft\Command Processor\Autorun值将命令行恢复到其正常行为。