Изменить переменную среды в реестре - PullRequest
2 голосов
/ 29 октября 2011

Я хочу прочитать все переменные среды из реестра и установить для нее новое значение с помощью c # в Visual Studio 2010 Express.

Таким образом я читаю подраздел локальной машины:

SYSTEM\CurrentControlSet\Control\Session Manager\Environment

и там значение Path.
При чтении значения Path:

reg = Registry.LocalMachine.OpenSubKey(SUB_KEY_PATH, true);

Я получил исключение, что у меня нет разрешения на это.

Поэтому я устанавливаю значение в манифесте:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Но теперь я не могу скомпилировать свой проект, потому что ClickOnce не поддерживает его. Как я могу скомпилировать проект с уровнем безопасности requireAdministrator? Одно решение, которое я нашел, - это скомпилировать его без уровня requireAdministrator, после чего я изменил значение в myproject.exe.manifest. Правильно ли я понял, что мне всегда нужно копировать оба файла (манифест и exe-файл) на другой компьютер, чтобы он работал правильно? Можно ли поместить информацию в exe-файл путем компиляции?

1 Ответ

1 голос
/ 29 октября 2011

Если вы хотите поднять во время установки, вы не можете использовать ClickOnce. Это выбор дизайна. Ваши варианты поэтому:

  1. Используйте стандартный установочный пакет, который позволит вам отобразить диалоговое окно повышения прав UAC.
  2. Изменение пользовательской среды PATH вместо общесистемной переменной. Эта опция полностью совместима с философией ClickOnce для каждого пользователя.
...