@gmikhail94

C#. Как дать права на добавление/удаление ключей реестра?

В своём приложение реализую возможность добавления/удаления контекстного меню в проводнике. Пытаюсь добавить/удалить ключ вот тут:
HKEY_CLASSES_ROOT\jpegfile\shell
jpegfile - тип файла (я их несколько использую)

Но это работает только если запустить приложение с правами администратора.
Вопросы:
Как разрешить приложению доступ к этим веткам реестра?
Обязательно ли для этого применять к приложению права администратора? (и если да - то как избавится от окна безопасности при каждом запуске приложения)
Может можно сделать интеграцию в контекстное меню проводника иначе? (чтобы не требовалось прав администратора)

---

Решение:
Спасибо dordzhiev за подсказку. При создании контекстного меню для конкретного пользователя не требуются права администратора. Создаю вот тут: HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\
  • Вопрос задан
  • 678 просмотров
Решения вопроса 1
dordzhiev
@dordzhiev
В зависимости от того куда писать. HKCR является виртуальным кустом, состоящим из HKCU\Software\Classes и HKLM\Software\Classes. Если писать в HKCU, то все норм, права не нужны. Но ассоциация будет только для текущего пользователя.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@smozhaykin
Возможно, можно написать сервис, который будет стартовать с правами администратора при установке приложения. Потом уже приложение через этот сервис будет менять значения реестра. Вроде так делается для автоматического апдейта некоторых приложений, чтобы не спрашивать постоянно у пользователя разрешение на установку.
Ответ написан
Комментировать
GavriKos
@GavriKos
Как разрешить приложению доступ к этим веткам реестра?

Это решает не программист, а политики безопасности конкретного компа.
Обязательно ли для этого применять к приложению права администратора? (и если да - то как избавится от окна безопасности при каждом запуске приложения)

Необязательно - опять таки см. политики безопасности. Вы никак не избавитесь от окна безопасности со стороны приложения. Только со стороны конкретного компа.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы