Где должны храниться глобальные параметры приложения в Windows 7? - PullRequest
3 голосов
/ 13 марта 2010

Я усердно работаю над тем, чтобы мой продукт без проблем работал в Windows 7. Проблема в том, что существует небольшой набор глобальных (не зависящих от пользователя) настроек приложения, которые все пользователи должны иметь возможность изменять.

В предыдущих версиях я использовал HKLM\Software\__Company__\__Product__ для этой цели. Это позволило опытным пользователям и администраторам изменять ключ реестра, и все работало правильно. Теперь, когда Windows Vista и Windows 7 имеют эту функцию контроля учетных записей, по умолчанию даже администратор не может получить доступ к ключу для записи без повышение .

Глупое решение, конечно, означало бы добавление опции requireAdministrator в манифест приложения. Но это действительно непрофессионально, поскольку сам продукт чрезвычайно далек от задач, связанных с администрированием. Поэтому мне нужно остаться с asInvoker.

Другое решение может означать программное повышение в моменты, когда требуется доступ для записи в ключ реестра. Не говоря уже о том, что я не знаю, как это реализовать, это тоже довольно неловко. Это так сильно мешает нормальному взаимодействию с пользователем, что я вряд ли рассмотрю это как вариант.

То, что, как я знаю, должно быть относительно легко сделать, это добавить доступ на запись к указанному ключу реестра во время установки. Для этого я создал отдельный вопрос . Это также очень похоже на доступ к общему файлу для хранения настроек.

Мне кажется, что должен быть способ выполнить то, что мне нужно, таким образом, чтобы он был безопасным, простым и совместимым со всеми операционными системами. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 15 марта 2010

Я новичок здесь (иначе я бы оставил комментарий), и я не гуру Windows, но ...

imho предпосылка ошибочна:

есть причина, если пользователь без повышенных прав не может изменять разделы реестра или каталоги, читаемые всеми пользователями (например, Users \ Public по умолчанию)

Я думаю, что разрешение любым пользователям изменять небольшой набор глобальных настроек приложения может нарушить работу других пользователей, которые не ожидали изменения своих настроек

с другой стороны, я не знаю ваших вариантов использования ...

Не могли бы вы указать, почему все пользователи должны иметь возможность изменять эти настройки? и если действительно все пользователи должны быть в состоянии сделать это ... почему вы не можете сделать эти настройки специфичными для пользователя?

0 голосов
/ 13 марта 2010

Вы должны иметь это в реестре? Если нет, поместите его в простой файл, доступный для записи всем. Запись в HKLM требует дополнительных привилегий по очень веской причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...