set コマンドが環境変数 GUI よりも多くの環境変数を表示するのはなぜですか?

set コマンドが環境変数 GUI よりも多くの環境変数を表示するのはなぜですか?

コマンドプロンプトでコマンドを実行すると、set最初に表示される変数は

ここに画像の説明を入力してください

しかし、環境変数GUIを開いても、ALLUSERSPROFILE

ここに画像の説明を入力してください

ここに画像の説明を入力してください

setそれはなぜでしょうか? GUI に表示されない他の変数も多数リストされています。それらはすべて同じ情報を表示するべきではないでしょうか?

答え1

少し試行錯誤した後、次の環境変数がSETWindows 8.1 システムで報告される追加の環境変数であることがわかりました。

ALLUSERSPROFILE
APPDATA
COMPUTERNAME
CommonProgramFiles
CommonProgramFiles(x86)
CommonProgramW6432
HOMEDRIVE
HOMEPATH
LOCALAPPDATA
LOGONSERVER
PROMPT
PUBLIC
ProgramData
ProgramFiles
ProgramFiles(x86)
ProgramW6432
SESSIONNAME
SystemDrive
SystemRoot
USERDOMAIN
USERDOMAIN_ROAMINGPROFILE

これらはすべて Windows によって自動的に生成および更新されるものと思われます。そのため、Windows レジストリのどこにもそれらのいくつかがリストされていないと考えられます。

私は知っていますHOMEDRIVEHOMEPATHそしてHOMESHARE自動的に更新からこのTechNetフォーラムの投稿

変数を(デフォルト)PROMPT以外のものに 永続的に変更しようとしたところ、新しい 環境変数が作成されたことに気付きました。$P$GSETXPROMPT<ユーザー名> のユーザー変数 環境変数 GUI のセクション。

その変数を削除すると、プロンプトは にリセットされました$P$G。環境変数でも同じ動作が見られましたCOMPUTERNAME。以下についても同様です。

CommonProgramFiles
CommonProgramW6432
PROCESSOR_ARCHITECTURE
ProgramFiles
ProgramW6432

このWOW64 実装の詳細に関する MSDN の記事

答え2

によるとSS64.com(Autoexec.batセクション)これらの変数は起動時変数は「32 ビット GUI プログラムでは利用できません」。Windows XP 以降では、起動時の環境変数は次のレジストリで設定する必要があります。
HKEY_CURRENT_USER\Environment (USER環境変数)または:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment(システム環境変数)
に示すようにマイクロソフトのKB

関連情報