2009-03-24 2 views
6

Я разрабатываю приложение, которое необходимо записать в реестр. Он отлично работает на XP, но когда я запускаю его на Vista, из Visual Studio, я получаю исключение безопасности:SecurityException при использовании Registry.LocalMachine.OpenSubKey

Registry.LocalMachine.OpenSubKey («ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ», true);

Я пытаюсь написать новый ключ в эту ветку реестра.

Каков правильный способ сделать это, во-первых, чтобы я мог запускать приложение из VS на Vista, а во-вторых, чтобы мои пользователи не столкнулись с проблемами, возникающими в Vista.

Благодаря ...

ответ

10

На XP и Vista вам нужны права администратора для написания нового ключа в LocalMachine.

Вы обнаружите, что это работает на XP и не удается выполнить Vista из-за разных учетных записей по умолчанию.

Быстрое и грязное решение для обеспечения того, чтобы ваше приложение выполнялось с правами администратора в обоих случаях, хотя в Vista это, как правило, недооценивается.

Лучшим решением было бы немного изменить дизайн - может ли новый дополнительный ключ быть написан вашим установщиком (который работает с правами администратора), или вы можете хранить свою информацию в другом месте?

+0

Да, это хорошее решение для меня - я думаю, что я буду установить это во время установки, как это приложение для всей настройки. –

7

Стандартные пользователи и администратор бежит с UAC на Vista, не имеют права на запись ключа локальной машины реестра. Это тоже не сработает на XP, если вы работаете как стандартный пользователь.

варианты:

  • Используйте Registry.CurrentUser вместо этого, если установка для каждого пользователя.
  • Запустите приложение в качестве администратора
  • Ослабить ACL на ключе, так что каждый может написать - который, безусловно, не рекомендуется, так как любая вредоносная программа на коробке может тост ключа.
2

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

Мое предложение было бы посмотреть, действительно ли вам нужно писать в LocalMachine. Вы можете писать в CurrentUser без прав администратора.

1

Я предполагаю, что это «работает под XP», потому что все запускают его как Admin под XP?

  • Вы можете попытаться обойти (создать ключ во время установки или использовать ключ под CurrrentUser или что-то еще).

  • Вы можете предоставить привилегию своему Приложению во время установки. Боюсь, я немного расскажу о том, как это сделать.

 Смежные вопросы

  • Нет связанных вопросов^_^