管理者以外のコマンドプロンプトに対してPATHの環境変数が展開されていませんか?


11

コマンドプロンプトが通常のユーザーによって実行されたときに、環境変数の展開に失敗するWindows 7マシンがあります%PATH%。代わりにコマンドプロンプトが管理者として実行される場合(右クリック、管理者として実行)、%PATH%適切に展開されます。

具体的に%PATH%cmd.exe、ユーザーとして実行する場合(で表示set path)は次のとおりです。

Path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

...一方%PATH%cmd.exe管理者として実行する場合は次のとおりです。

Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\Wbem;%SYSTEMROOT\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

新しいユーザーとしてログインして新しいプロファイルを作成しようとしましたが、そのプロファイルでも問題が解決しません。HKEY_CURRENT_USER\Environment\PATH存在せず、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path[コンピューターのプロパティ]-> [環境変数]で定義されたシステム全体のパスと一致します。

誰がこれが何であるか、または私がどこで見ることができるかについてのアイデアを持っていますか?

回答:


8

私が試すことができる2つのこと。

  1. を実行して、sfc /scannowプレイ中のより大きな問題を修正するかどうかを確認します。
  2. でレジストリのPathキーを確認しますHKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentタイプは何ですか。それは言うべきですREG_EXPAND_SZ

それでした。通常のマシンを使用しREG_SZて問題が発生するように設定した場合、設定し直したREG_EXPAND_SZ場合は修正されます。
スティーブビニョー

@スティーブ-甘い!私もそのことについて何かを学んだ:)
Nixphoe

1
しかし、私は疑問に思う。レジストリで間違った値のタイプでそれらのenv変数を作成するのはなぜですか?以前にこの問題が発生したことを覚えていません。Windows8.1 Update 1を使用していますが、この問題はXPでも発生したようです。support.microsoft.com/kb/329308
エイドリアンペレス14

0

Mavenを設定しようとしているときに同じ問題に遭遇しました...

私はこの問題についていくらか光を当てるこのスーパーユーザーに関する投稿を見つけましたが、それは私にとってはうまくいきませんでした。この問題は、権限の昇格に関するものと思われます。管理シェルは機能しますが、ユーザーシェルは機能しないためです。最終的に、ユーザー変数を代わりにシステム変数として再作成し、それらをグローバルパスに追加することにしました。

これはいくつかの変数で機能しましたが、まだ拡張しないペアが1つありました。数回、新しい名前でそれらを再作成しましたが、役に立ちませんでした。ただし、UACを無効にし、再起動し、UACを再度有効にして、再起動すると、ユーザーシェルで変数が最終的に正しく展開されました。


0

私は非常に似た問題を抱えていました-簡単な解決策は、パス定義のエイリアスの後にセミコロンを追加することでした。

長い話:

私は使用しnode.jsているので、ユーザー環境変数を介してNODE_HOMEエイリアスを定義しています。次に、このエイリアスをPATH環境変数に追加します。

私が見つけたのは、再起動後にシェルがNODE_HOMEへのパスを失ったためnpmなどが機能しないということです。どうしたの?

調べてみると、NODE_HOMEが設定されているが、魔法のようにセミコロンを取得していることがわかります。

C:\Users\ob>echo %NODE_HOME%
C:\Users\ob\node-8.11.1;

PATHは、ノードフォルダーへの展開パスではなく、リテラル文字列%NODE_HOME%で終了します。

C:\Users\ob>echo %PATH%
C:\Program...rams\Git\cmd;%NODE_HOME%

修正するには:

まず、NODE_HOMEの定義の最後から誤ったセミコロンを削除します。

次に、PATHの定義でNODE_HOMEシンボルの後にセミコロンを追加します。

C:\Program...rams\Git\cmd;%NODE_HOME%;

これで、新しいシェルを起動してPATHを展開すると、NODE_HOMEが見つかります

C:\Users\ob>echo %PATH%
C:\Program...ams\Git\cmd;C:\Users\tkobo\Installations\node-8.11.1;

そしてnpm再び動作します!


-1

問題:私はあなたを正しく理解しているので、私の問題はほんのわずかでした。私の「パス」には...;%ANT_HOME%\ bin; ...システム(ユーザーではない)変数の下に変数ANT_HOMEが正しく設定されており、CMD-> SETが「echo%ANT_HOME%」と同じように正しく印刷されました。 。

解決フォルダーをc:\ dev \ 3rd \ ant ... から c:** Programm Files(x86)** \ dev \ 3rd \ ant ...に移動することで問題を解決しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.