Невозможно создать переменную среды в реестре - PullRequest
0 голосов
/ 03 сентября 2008

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

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

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

Ответы [ 4 ]

1 голос
/ 19 ноября 2008

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

1 голос
/ 03 сентября 2008

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

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

1 голос
/ 03 сентября 2008

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

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

0 голосов
/ 03 сентября 2008

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

...