で既に解決済みだが、 「システムのプロパティ」ダイアログの「詳細設定」タブ(SystemPropertiesAdvanced.exe)から、「環境変数」 ダイアログ開いて環境変数変更すると、変更が即座に explorer.exe に反映されるのに、reg.exe や PowerShell の Set-ItemProperty で変更すると、explorer.exe 再起動するか「環境変数」 ダイアログの「OK」ボタン押すまで explorer.exe に反映されない。
- 丁稚な日々 / 2008−03−03: [Win32] 小ネタ
とりあえず、WM_SETTINGCHANGE 投げれば OK っぽいのだが、
「WM_SETTINGCHANGE powershell」でググると、以下のページの機械翻訳で断片化したページを見つけた。
なんでも、自分で WM_SETTINGCHANGE 発行しなくても、[Environment]::SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarget target) で書き換えれば自動的に投げてくれるらしい。
ところが、こいつは、REG_SZ 限定。REG_EXPAND_SZ で書けない。
「[Environment]::SetEnvironmentVariable REG_EXPAND_SZ」でググると
しばらく悩んだが、与えた変数名に値として空文字列与えれば結果的にその変数名の環境変数が削除されるので、以下のようにするのが一番手間要らずというのが結論じゃないかと思う。
「WM_SETTINGCHANGE powershell」でググると、以下のページの機械翻訳で断片化したページを見つけた。
- stackoverflow / 2016-08-13: How do I set an env variable in PowerShell if it doesn't exist?
なんでも、自分で WM_SETTINGCHANGE 発行しなくても、[Environment]::SetEnvironmentVariable(string variable, string value, EnvironmentVariableTarget target) で書き換えれば自動的に投げてくれるらしい。
ところが、こいつは、REG_SZ 限定。REG_EXPAND_SZ で書けない。
「[Environment]::SetEnvironmentVariable REG_EXPAND_SZ」でググると
- stackoverflow / 2012-07-02: Setting Environemnt Type to reg_expand_sz using powershell
しばらく悩んだが、与えた変数名に値として空文字列与えれば結果的にその変数名の環境変数が削除されるので、以下のようにするのが一番手間要らずというのが結論じゃないかと思う。
[Environment]::SetEnvironmentVariable("WM_SETTINGCHANGE","","User")
タグ
コメントをかく