Записи реестра для всех пользователей в Python - PullRequest
0 голосов
/ 24 октября 2010

Я написал приложение, которое хранит несколько вещей в реестре.Когда я только начинал, я добавил их в HKEY_LOCAL_MACHINE, но продолжал получать ошибки разрешения при записи в.Поэтому было предложено использовать HKEY_CURRENT_USER, который работал, пока я не понял, что не могу получить к ним доступ из другого аккаунта.Как я могу записать в реестр, но разрешить всем учетным записям доступ для чтения и записи в него?

Я использовал модуль Python _winreg.

Ответы [ 4 ]

2 голосов
/ 25 октября 2010

HKEY_LOCAL_MACHINE/Software/YourSoftware, требуются права администратора и для данных во время установки, или HKEY_CURRENT_USER/Software/YourSoftware, для данных, относящихся только к этой среде (этот пользователь, этот профиль и т. Д.)

РЕДАКТИРОВАТЬ: Альтернативой будет сохранение файла конфигурации и установка правильных разрешений во время установки.

2-е РЕДАКТИРОВАНИЕ: Я прочитал в другом комментарии, что вы хотите быть уверены,только ваше приложение изменило какой-то файл, поэтому вы сохраняете время модификации.Обходные пути:

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

По моему интуитивному убеждению, ваше требование изменить файл только вашим приложением, но под любой учетной записью, очень неправильно но более-менее правильные решения должны налагать дополнительные сложности.Ваше решение: пересмотрите ваши требования и, возможно, ваш дизайн, или добавьте слой сложности и, возможно, глупости.

3-е РЕДАКТИРОВАНИЕ: Разделите ваше приложение, получите приложение администратора, которое может с правами администраторанапишите HKLM и установите настройки.Обычные права пользователя должны быть достаточными для чтения HKLM

0 голосов
/ 12 мая 2011

Еще одна возможность - изменить защиту ваших ключей HKLM на R / W для всех. Хотя идея о том, что это как-то защищает от модификации, кажется немного натянутой.

Regedt32 имеет возможность устанавливать ключи, поэтому базовый API тоже должен иметь его.

Все это говорит о том, что это запутанный способ запуска приложения и показывает серьезное отсутствие понимания моделей безопасности. (Другими словами, типичная разработка windows.)

Как я стал таким циничным .....

0 голосов
/ 24 октября 2010

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

Возможно, вам будет удобнее хранить информацию в файле, которым будет проще управлять.

0 голосов
/ 24 октября 2010

Вам либо понадобятся права администратора для записи в HKLM, либо согласитесь на неглобальные ключи reg. Поведение будет несколько отличаться в разных версиях Windows.

...