web-dev-qa-db-ja.com

環境変数を設定するには、64ビットで再起動する必要があります

システムPATH環境変数を設定する必要があるWix 3.5を使用するインストーラーで作業しています。

これは私が環境変数を設定する方法です:

<Directory Id="DirectoryName">
    <Component Id="ComponentID" Guid="{BE20AF67-5943-4AF4-BE66-226E2D4B844F}">
        <Environment Id="EnvironmentID" Name="PATH" Action="set" Value="the path" Part="last" Separator=";" System="yes" />
    </Component>
</Directory>

これは、変更を認識させるために再起動を必要とせずに32ビットシステムで動作しているようです。ただし、64ビットWindows 7で試してみると、再起動が必要です。

これは64ビットシステムでの既知の問題ですか?

たぶん、最善のアプローチは、すべてのベースをカバーするために再起動をスケジュールすることです。

ありがとう、アラン

27
Alan Spark

ServerFaultで次の質問を確認してください。 再起動せずにWindows環境変数を追加するにはどうすればよいですか?

そのため、環境変数のリストに変更を反映させるために、ブロードキャストする小さなプログラムを書くことができます WM_SETTINGCHANGE KB記事で説明されているメッセージ 環境変数をシステムに伝播する方法

27
Alexey Ivanov

環境変数を追加または設定すると、WM_SETTINGCHANGEメッセージがすべてのプログラムに送信され、変更を通知します。ただし、既に実行されているプログラムは、このメッセージ自体を処理できない限り、更新された環境を取得しません。システムを再起動すると、すべてのプログラムが更新されます。

再起動せずに回避策:

  1. 強制終了して再起動しますExplorer.exe。ただし、これは実行中のすべてのプロセスでは機能せず、現在ログオンしているユーザーに対してのみ機能します。
  2. 使用するプロセスまたはプログラムを再起動します。 cmd.exeでこれを試してください。繰り返しますが、これはログオンしているユーザーに対してのみ機能します。

要約すると、これをすべてのユーザーに対して機能させるには、リブートする必要があります。