Windows10での環境変数のパス指定はコンパネ→システム→システムの詳細設定→環境変数と進んで環境変数PATHを編集して指定することができます。確認したのですが、確かにそうなっています。スペルミスも発見できません(昔と違って表のようになってます)。それを指定した後、パワーシェルでその新規に指定したパスでの実行ファイルを入力しても実行しません。実行ファイルが見つからないというメッセージです。
環境変数PATHがどうなっているか調べるためにコマンドプロンプト(パワーシェルじゃないもの)でPATHコマンドを入力してみると確かに指定されていません。指定したフォルダが入っていないのです。
設定しているのに、設定されていないようになっている理由が不明です。なせ有効にならないのだろうと思うのですが。例えばフォルダ名が.abcのように隠しファイルのようなドットが先頭に入っているとダメなのでしょうか。確かに設定されているのに、何かの理由で有効になっていない理由が知りたいのですが。そして有効化したいのです。よろしくお願いします。
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
> 環境変数PATHに制限をつけた理由が今一つわからない感じです。
半角で2000文字ですと、約2KBですので、そんなに大きくは無いですね。
ただ、ここに書かれたパスの直下にあるファイルも参照しないといけませんから、実質はそれ以上だと思うんですよ。
あと、専門家ではないので分かりませんが、データ量に制限を掛けないと、バッファオーバーフロー等、セキュリティ上の問題もあるのかなと思いました。
あとは、恐らく、2000文字もあれば、一般的には十分なのだと思います。
質問者さんの環境で、なぜそんなに多くの環境変数が登録されているのかが分からないです。プログラミングとか、開発をされているのでしょうか。
> %USERPROFILE%とか%SystemRoot%というのはワイルドカードのようなものでそれ自体、環境変数なのかなと思うのですが、それはどうやって決まってくるのでしょうか。
レジストリ内を探すと、
「USERPROFILE」は、
「HKEY_CURRENT_USER\Volatile Environment」
「SystemRoot」は、
「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion」
に記述されています。
ただ、ここに書かれた値がシステムに反映されているのかと言えば、そうではない可能性もあるかと思います。
特に、「Volatile Environment」は、訳すと「揮発性環境変数」という意味です。
> ユーザが設定するものではなく、OSが決めているということなのでしょうか。
ユーザーが書き換えたり出来ない可能性はあるかも知れません。
詳しくは、WEB上をくまなく探してみないと分からないかも知れません。
ただ、重要な環境変数ですから、書き換えられても書き換えない方が無難だと思います。
回答ありがとうございました。私はユーザ全体からすると開発側の人間だと思います。プログラムのソースコードを書いています。それを売っているわけではなくて、理系の科学技術系のシミュレーションプログラムを自分と少しのメンバーのために書いています。そういう意味で例外処理対策とかが甘っちょろいプログラムになっていますが、Visual studioの機能は使います。本来、自分のコードにだけ集中したいのでレジストリなどの環境設定関係には疎いです。解説ありがとうございました。
No.7
- 回答日時:
2000文字を超えているという事は、不要なパスが結構含まれている気がします。
私の環境(Windows10 Home バージョン:1909 64bit)では、環境変数の「Path」は以下のようになっています。
■ ユーザー
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
■ システム
%SystemRoot%\system32
%SystemRoot%
%SystemRoot%\System32\Wbem
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
%SYSTEMROOT%\System32\OpenSSH\
上記で正常にWindowsが動作していますので、最低限上記だけ登録されていれば問題ない気がします。
あとは、ご自身がインストールした記憶があるプログラム関連のパスだけ残して、削除しても問題無いのではないでしょうか。
念の為、当該の「Path」の値をテキストファイル等にコピー&ペーストして保存し、復元ポイントも作成した上で実行すれば、ほぼ心配無い気がします。
あとは、何かのパスが通らないようになったら、その都度対応すれば良いのではないでしょうか。
回答ありがとうございます。PATHや環境変数が重複して設定されている場合もありました。どう考えても消して良さそうなものは消していきました。一方で環境変数PATHに制限をつけた理由が今一つわからない感じです。プログラムの格納先なのだから、いわば、住所録とか電話帳であり、量的に必要なだけあっていいんじゃないかという気がしました。環境変数をいくらでもつけることができるわけでもないからおのずと上限が決まってくるわけで、初めから上限をつける(住所録の紙面の数を限定する)必要はないはずだと思っていたのですが。
ところで、%USERPROFILE%とか%SystemRoot%というのはワイルドカードのようなものでそれ自体、環境変数なのかなと思うのですが、それはどうやって決まってくるのでしょうか。ユーザが設定するものではなく、OSが決めているということなのでしょうか。
No.6
- 回答日時:
No5のお礼の内容がよく分かりませんが、システム環境変数のPATHとユーザー環境変数PATHのそれぞれが2000文字を越えるということでしょうか?
さっきちょっと書き誤りましたが、
「システム環境変数とユーザー環境変数のそれぞれ約2000文字可能なはずなので、越える方から余裕のある方へ移すとか、」の誤りです。
あとは、本当に環境変数初期値に設定が必要か、1つ1つのディレクトリについて吟味するとか。使う予定の無いベンダー独自ソフト用とか。
後半にお書きのことについては、どこかで制限を設けないといけないので、設計時点の判断では十分大きい数字の約2000にしたと言うことでしょう。昔はもっと短かった気がします。
ファイルのパスの最大長も255文字と今となっては短いので、ファイルを階層の下の方のフォルダーに移動させると制限を超えてアクセス出来なくなると言うこともあります。現在はレジストリ変更で上限を増やせるようですが。
回答ありがとうございます。2000文字オーバーであり、2000文字を下回らない限り修正も受け付けてくれないということでした。今回システムとユーザの両方に同一の環境変数の指定があったり、片方だけみても同一の環境変数の指定がありました。ナニコレ?という感じです。自分ではやっていません。何かインストールするときそうなったとしか思えません。思い切って軽量化してOKを押してもメッセージが出なくなりました。C:\Windows\systemなどいうようなところは環境変数にしてしなくてもいいはずだと思うのですが、指定してあります。
あと環境変数の指定の中に%SystemRoot%とか%USERPROFILE%というようなどこかで定義されたものを変数として使ったりする場合があります。この変数もある程度長いですが、どこかで定義していたら一気に変更できたりするのですが、これはどこで指定しているのでしょうか。自動で決まっており動かせないものでしょうか。
No.5
- 回答日時:
上限は約2000文字のはずですが、それを越えてたという事ですかね。
なんと。システム環境変数とユーザー環境変数のそれぞれ約2000文字可能なはずなので、余裕のある方から他方に移すとか、C:\Program FilesをC:\PROGRA~1にするとか。
後者は、コマンドプロンプトで、dir c:\ /x で名前(8文字)を確認してください。
回答ありがとうございます。2300文字だった場合、少し減らして2200文字にしたとしても200文字オーバーなのでその設定は受け付けず、2300文字のままと思います。緩和される方向に減らしたとしても受け付けられないことには変わらないので2300から動かない、そういう風になっているようです。
自分が使っている他のPCを調べたところ、やはりこれほど大きな環境設定はありません。問題のPCをみたところ、ディスプレイ関係(Nvidia)toka
intelのドライバのライブラリをいろいろ指定してパスが大きくなっているみたいでした。
ところで、環境設定とかパスの文字制限ですが、この程度の量はメモリとかディスク容量からするとほぼゼロのはずですね。なぜこういう制約があるのかなと思いました。例えて言うならどんなに辞書の収録を大きくしても紙が足りないから刷って作れないということはないと思うのですが。多くのソフトを同時に起動させるのはメモリの制限できまるのであり、起動できるソフトウェアは許す限りどこまで多くてもいいのではないかと思ったのですが。
No.4
- 回答日時:
「.abc」フォルダでもパスは通りました。
スペルミスは無いとの事ですが、一度、「C:\xxx」のようなシンプルなパスなら通るか、テストしてみると良いかと思います
又、環境変数を変更するソフトもありますので、そちらでもテストしてみると良いかと思います。
eve(Environment Variable Editor)
https://www.vector.co.jp/soft/dl/win95/util/se27 …
※環境変数を変更後、最後に「保存して適用」をクリックして閉じます。
又、「setx」コマンドでも環境変数を書き換えられますが、環境変数がおかしくなる場合があるようなので、あまりお勧めはしません。
他に手が無ければ、事前に対象となる環境変数の変更前の値をバックアップしてから試してみるのも良いかも知れません。
レジストリで言えば、環境変数の場所は、
「HKEY_CURRENT_USER\Environment」(ユーザー)と、
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment」(システム)です。
何も手立てが無くなったら、「C:\Windows」フォルダ内に対象プログラム(「~.exe」等)をコピーしてやればパスが通る筈ですので、とりあえずそれでも良いのではないでしょうか。
回答ありがとうございます。お世話になります。ひとまず問題の原因が分かったように思っています。PATHの文字数が長すぎるということです。なんとか副作用がないように短くする方法を考える必要があると思います。
PATHは";"で切る項目数ではなく、全体の文字数の制限があるようです。
No.3
- 回答日時:
まずPowerShell上でPathを確認しましょう。
プロンプトで
$ENV:Path
と入れてEnterしてください。あるいは読みやすくするために
$ENV:Path.split(';')
でもよいです。
これで表示されるのがPowerShellで認識されているPathです。
設定が反映されていないならWindowsごと再起動する方が良いです。
再起動した上でシステム詳細とPowerShell上でPathがどうなっているか確認下さい。
なお、PowerShell上で環境変数Pathを設定する方法は下記に。
https://qiita.com/gx3n-inue/items/00ee48996e9730 …
ただし、これだとシステム設定はされないのでPowerShellを立ち上げるたびに再設定が必要になると思います。
回答ありがとうございます。PATHを指定するコンパネ以下の画面では確かにある、しかし、効いてないという質問だったのですが、原因が分かりました。PATHが長すぎるということです。実際にあの画面をOKで保存するときにエラーになりました。見るだけだったらキャンセルでいいので気づきませんでした。OKだったらそれを保存して有効化するということになるのでNGとなります(文字数制限)。とすると、PATHを短くするわけですが、これが案外面倒です。よく見ると重複もあります。似たような名前もあります。Program Filesというので14文字ですが、これがいっぱいになるとそれだけで文字数制限に影響します。これを$PFとかで短くできないかなと思うのですが。
No.2
- 回答日時:
既に起動中のプログラムに環境変数変更は伝搬しません。
変更後に、Explorerから起動したプログラムにだけ有効です。
PowerShellを起動しましょう。
OS全体を再起動する必要は無いです。
回答ありがとうございます。環境変数PATHを設定してその後、Powershellを起動しているのですが、環境変数が反映されないですね。再ブートも試みています。Powershell上でpathを確認することは可能でしょうか。現在は起動しないがゆえにPATH変更が効いてないということになりますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/04/17 13:07
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Windows 10 pathが通らない 2 2023/03/27 11:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XPの仮想メモリをUSBメモリに変...
-
vbscriptでNUMLOCK判定したい
-
タスクにカーソルを合わせて出...
-
画面左上の「戻る」表示が消えた
-
Outlook Expressの「受信者の選...
-
Hyper-Vで仮想マシンにてUSB無...
-
生成AI画像について
-
メルカリのメルカードで買い物...
-
画像をループさせるうまい方法...
-
リストボックスの選択解除
-
VBAでループ内で使う変数名を可...
-
Pythonでgif画像が上手く作れない
-
エクセルVBAで、MsgBox やInput...
-
switch の範囲指定
-
「ご処理進めて頂きますようお...
-
Excel VBAでマウスの左クリック...
-
VBA エンターキーでイベントに...
-
エクセルで、日付を入力すると...
-
お家デートをしててハグを長い...
-
【Excel】特定の文字を含むセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbscriptでNUMLOCK判定したい
-
pcieスロット1が認識してくれな...
-
画面左上の「戻る」表示が消えた
-
Hyper-Vで仮想マシンにてUSB無...
-
インターネット接続でよく切断...
-
環境変数TEMPについて、設定内...
-
XPの仮想メモリをUSBメモリに変...
-
gpedit.mscがみつからない
-
内蔵HDDをセカンダリーにするには
-
ダブルクリック速度の設定が再...
-
ブルースクリーンの原因で「ntk...
-
環境変数のための領域
-
ページファイル構成 (エラー...
-
DaemonToolsのファイル参照履歴
-
Androidエミュレータでネット接続
-
Windows10でのパス指定と有効性...
-
無線LAN(子機)の設定
-
デフォルトゲートウェイが表示...
-
iphone6 walletが使えなくなった
-
Windows2000というOSについて
おすすめ情報