Подтвердить что ты не робот

Настройка переменных среды требует перезагрузки на 64-битной

Я работаю над установщиком, использующим Wix 3.5, который должен установить переменную среды PATH системы.

Вот как я устанавливаю переменную среды:

<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-разрядных систем?

Возможно, лучшим вариантом было бы запланировать перезагрузку для всех баз.

Спасибо, Алан

4b9b3361

Ответ 1

Проверьте этот вопрос на ServerFault: Как добавить переменную среды Windows без перезагрузки?

Итак, чтобы распространить изменение на список переменных среды, вы можете написать небольшую программу, которая передает WM_SETTINGCHANGE сообщение, как описано в KB article Как распространять переменные среды в системе.

Ответ 2

Когда вы добавляете или устанавливаете переменную окружения, сообщение WM_SETTINGCHANGE отправляется всем программам, чтобы сообщить им об этом изменении. Однако любая уже запущенная программа не получит обновленную среду, если только она не сможет обработать это сообщение. Перезагрузка системы обновляет каждую программу.

Обходной путь без перезагрузки:

  • Убейте и перезапустите explorer.exe, хотя это не работает для каждого запущенного процесса и только для текущего пользователя.
  • Перезапустите процесс или программу, которую вы хотите использовать, т.е. попробуйте это с помощью cmd.exe. Опять же, это работает только для зарегистрированного пользователя.

Итак, суммируя, чтобы заставить это работать для каждого пользователя, вам все равно нужно перезагрузиться.