web-dev-qa-db-ja.com

CMDがこのマシンの環境変数を継承しないのはなぜですか?

何らかの理由で、特定のマシンでは、私のcmdプロセスはそれを起動した親プロセスからその環境変数を継承しません。代わりに、エクスプローラーから起動したときのように、「デフォルト」の環境設定に戻ります。

これを示す簡単な方法は、コマンドプロンプトを開いてset Path=C:\Windows\System32\を実行し、次に同じプロンプトから別のcmdプロセスを起動することです。その後、set Pathを実行して変数を表示できます。

これはである必要があります "C:\ Windows\System32"(起動プロセスから継承)ですが、私のマシンでは、環境のデフォルトに戻ります。

次のようなものが表示されます: Working command Prompt

代わりに以下を取得します: CMD breaking the rules

何が原因でしょうか?環境変数の動作に関するすべてのルールに違反しているようで、この1台のマシンにのみ影響します。

19
Paul Turner

問題の原因は コマンドプロセッサのAutoRun設定 です。コマンドラインのこの小さな「機能」により、CMDプロセスが開始するたびに実行されるようにスクリプトを構成できます。

私の場合、何か(おそらくNVMWのインストール)が、既存の値を完全に無視して、まったく新しいPath値を割り当てるスクリプトを登録していました。

HKCU\Software\Microsoft\Command Processor\Autorun値を削除すると、コマンドラインが通常の動作に戻りました。

26
Paul Turner