Невозможно создать переменную среды в реестре

StackOverflow https://stackoverflow.com/questions/40840

  •  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 среды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top