2008-09-02 8 views
0

У меня есть пользовательское действие установщика, которое обновляет среду PATH и создает дополнительную переменную среды. Добавление каталога в существующую переменную пути работает нормально, но по какой-то причине мои попытки создать новую переменную окружения не увенчались успехом. Код я использую:Невозможно создать переменную среды в реестре

 using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true)) 
     { 
      reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString); 
     } 

Edit: ОС 32-битная XP, и, насколько я могу сказать, что это не удается молча.

ответ

1

Есть ли причина, по которой вы должны сделать это через реестр?

Если нет, вы можете использовать Environment.SetEnvironmentVariable() с .NET 2.0. Он позволяет устанавливать на машине, в процессе или на основе пользователя.

1

Что такое ОС? Это на 64-битной системе? Какова природа неудачи: молчание или исключение?

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

0

Оказалось, что была другая проблема, которая мешала коду в моем вопросе быть вызванным. Тем не менее, я использовал сборку Win32, потому что код примера, который я использовал, был написан до того, как сборка Environment стала доступной. Так что спасибо Петру за указание API окружающей среды.

1

Почему вы используете CustomAction для этого? Установщик Windows поддерживает обновление переменных среды изначально.