none
Windowsの環境変数の制限につきまして RRS feed

  • 質問

  • Windowsには、2047文字の環境変数の制限があるようなのですが、下記サイトによると環境変数の制限を4095文字に拡張ができる趣旨のことが記載してあります。

    http://www.isus.jp/article/idz/limitation-to-the-length-of-the-system-path-variable/

    https://software.intel.com/en-us/articles/limitation-to-the-length-of-the-system-path-variable

    このサイトに文字数の制限を拡張する方法が記載されていないのですが、方法についてご存知の方はいらっしゃいますでしょうか。

    2015年12月11日 7:43

回答

  • 実行ファイルとPATHの関係が明確なものは、システム環境変数のPATHから
    レジストリの
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
    へ移動することをお勧めします。
    • 回答としてマーク uraxurax 2015年12月16日 11:00
    2015年12月14日 4:02

すべての返信

  • フォーラム オペレーターの星 睦美です。uraxurax さん、投稿ありがとうございます。

    今回の質問の対象としているOSはなんでしょうか?

    こちらの開発者向けのフォーラムよりも、TechNet フォーラムのWindows OS に関する話題を扱っているフォーラムのほうが情報をみつけやすいように思いますので、もし情報が見つかりにくい場合には質問を移動させていただきますね。

    フォーラム ユーザーからの回答が参考になりましたら[回答としてマーク] をお願いします。

    ・フォーラムのヘルプ


    フォーラム オペレーター 星 睦美 - MSDN Community Support

    2015年12月11日 8:06
  • 一般の「環境変数」という意味では、 ms682653によれば、「no technical limitation on the size of the environment block」とか、「無制限だけど、実用上32K」とかあります。
    PATHの「再起動が必要」という文脈はKB2685893に記載がありますが、要するに変更したあとに流すWM_SETTINGCHANGEに2047文字の制限があり、そのため再起動するまでは効かない、ということが書いてあります。HOTFIXを当てれば再起動も要らないのかはこちらでは確認しておりません。

    jzkey


    • 編集済み jzkey 2015年12月11日 8:12 リンクを修正
    2015年12月11日 8:10
  • 情報ありがとうございます。

    すでにそれらのアップデートはあてているのですが、再起動しても4095文字に拡張されないようです。。。

    問題が起きているのは、PATHの環境変数で、System用のPATHが1800文字、User用のPATHが400文字くらいなのですが、Systemの部分までしか有効にならないようです。。。。

    2015年12月11日 9:09
  • 使用しているのは、Windows7です。

    TechNetフォーラムもみてみます。

    情報ありがとうございます。

    2015年12月11日 9:11
  • その、「PATHがSystemの部分しか有効にならない」っていうのは、どうやってで判断しました?

    jzkey

    2015年12月13日 2:15
  • コマンドプロンプトにて、echo %PATH%を実行しました。

    環境変数のPATHは、System用のPATHの後にUser用のPATHがつなげられるとネットの情報で見ていたのですが、System用のPATHの後がまったくなくなっていました。

    2015年12月14日 1:02
  • jzkeyさんの提示されたEnvironment Variablesには

    The maximum size of a user-defined environment variable is 32,767 characters. There is no technical limitation on the size of the environment block. However, there are practical limits depending on the mechanism used to access the block. For example, a batch file cannot set a variable that is longer than the maximum command line length.

    と書かれており、バッチファイルおよびそれを動かしているコマンドプロンプトの上限に引っかかっているだけなのでは? もう少し説明すると、PATH環境変数が正しく設定されていたとしても、ECHOコマンドが受け取れる引数の長さに制限があります。

    2015年12月14日 1:28
  • 実行ファイルとPATHの関係が明確なものは、システム環境変数のPATHから
    レジストリの
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
    へ移動することをお勧めします。
    • 回答としてマーク uraxurax 2015年12月16日 11:00
    2015年12月14日 4:02
  • 実行ファイルとPATHの関係が明確なものは、システム環境変数のPATHから
    レジストリの
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
    へ移動することをお勧めします。

    これってバッチとかコマンドラインでも効くんでしたっけ?

    ファイル名を指定して実行系の操作とかでしか効かなかったような…

    2015年12月15日 2:22
  • コマンドプロンプトからは、start [実行ファイル名] で起動できます。
    起動した実行ファイルから見て、レジストリに登録したPATHは通ってます。
    しかしコマンドプロンプト自体にPATHが通るわけではありません。
    2015年12月15日 3:03
  • コマンドプロンプトからは、start [実行ファイル名] で起動できます。
    起動した実行ファイルから見て、レジストリに登録したPATHは通ってます。
    しかしコマンドプロンプト自体にPATHが通るわけではありません。

    あ、そういうことですね、なるほど。

    2015年12月15日 4:27
  • 情報ありがとうございます。

    現在のPATHの長さは、2000文字+αなので、32767文字は超えてないようです。

    また、System用のPATH(1800文字程度)+User用のPATHが2000文字程度に収まっていた場合には、すべて見えていたものが、System用のPATH(1800文字程度)+User用のPATHが2000文字程度を超えたタイミングで、System用のPATHしか表記されなくなったので2000とか2047とかのあたりに何か壁があるのではないかなと考えております。

    System用のPATH(1800文字程度)
    System用のPATH(1800文字程度)
    2015年12月16日 3:07
  • hihijijiさん、なちゃさん

    情報ありがとうございます。

    いただいた情報で試してみます。

    大変貴重な情報ありがとうございました。

    2015年12月16日 3:11