2011-10-29 2 views
2

Я хочу прочитать всю переменную среды из реестра и установить новое значение для нее с помощью 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-file) на другой компьютер, чтобы запустить его правильно? Можно ли поместить информацию в exe-файл путем компиляции?

+1

Необходимо щелкнуть мышкой по кнопке ClickOnce. –

+0

Как я могу отключить его? – stormsam

+0

Вы не отключите его, вы просто не используете его для развертывания вашего продукта. И используйте обычный установщик, созданный проектом «Установка и развертывание». Недоступно в экспресс-редакции. –

ответ

1

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

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