Невозможно создать переменную среды в реестре
-
09-06-2019 - |
Вопрос
У меня есть пользовательское действие установщика, которое обновляет среду PATH и создает дополнительную переменную среды. Добавление каталога к существующей переменной пути работает нормально, но по некоторым причинам мои попытки создать новую переменную среды оказались безуспешными. Код, который я использую:
using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
{
reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
}
Редактировать. Операционная система - 32-разрядная XP, и, насколько я могу судить, она работает тихо.
Решение
Есть ли какая-то причина, по которой вы должны сделать это через реестр?
Если нет, вы можете использовать Environment.SetEnvironmentVariable () начиная с .NET 2.0. Это позволяет вам настраивать на машине, процесс или пользователя.
Другие советы
Что это за ОС? Это на 64-битной системе? Какова природа ошибки: молчание или исключение?
Вы можете попробовать запустить ProcessMonitor и посмотреть, видит ли он попытаться установить значение.
Почему вы используете CustomAction для этого? Установщик Windows поддерживает собственное обновление переменных среды.
Оказывается, была другая проблема, которая не позволяла вызвать код в моем вопросе. Однако я использовал сборку Win32, потому что пример кода, которому я следовал, был написан до того, как сборка Environment стала доступной. Так что спасибо Питеру за указание на API среды.