質問
PATH 環境を更新し、追加の環境変数を作成するカスタム インストーラー アクションがあります。既存のパス変数へのディレクトリの追加は正常に機能していますが、何らかの理由で新しい環境変数を作成しようとしましたが失敗しました。私が使用しているコードは次のとおりです。
using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
{
reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
}
編集:OS は 32 ビット XP ですが、私の知る限り、静かに失敗しています。
解決
レジストリ経由で行わなければならない理由はありますか?
そうでない場合は、.NET 2.0 以降では、Environment.SetEnvironmentVariable() を使用できます。マシン、プロセス、またはユーザーごとに設定できます。
他のヒント
これは何のOSですか?64 ビット システム上ですか?失敗の性質は次のとおりです。サイレントですか、それとも例外がスローされますか?
走ってみるのもいいかもしれません プロセスモニター そして、値を設定しようとしているかどうかを確認します。
これに CustomAction を使用するのはなぜですか?Windows インストーラーは、環境変数の更新をネイティブにサポートしています。
私の質問のコードの呼び出しを妨げる別の問題があったことが判明しました。ただし、私がフォローしていたサンプル コードは、Environment アセンブリが利用可能になる前に記述されていたため、Win32 アセンブリを使用していました。Peter さん、Environment API について指摘してくれてありがとう。
所属していません StackOverflow