Python中所有用户的注册表项

Python中所有用户的注册表项,python,windows,permissions,registry,winreg,Python,Windows,Permissions,Registry,Winreg,我编写了一个应用程序,在注册表中存储了一些东西。当我第一次启动时,我将它们添加到HKEY_LOCAL_机器中,但不断地在写入时出现权限错误。所以,有人建议我使用HKEY_CURRENT_用户,直到我意识到我无法从其他帐户访问它们。如何写入注册表,但允许所有帐户对其进行读写操作 我使用了Python模块_winreg。您要么需要管理员权限才能写入HKLM,要么接受非全局注册表项。不同版本的windows之间的行为会有所不同。如果要写入注册表以便所有用户都可以读取,则需要以管理员权限运行程序 您可能

我编写了一个应用程序,在注册表中存储了一些东西。当我第一次启动时,我将它们添加到HKEY_LOCAL_机器中,但不断地在写入时出现权限错误。所以,有人建议我使用HKEY_CURRENT_用户,直到我意识到我无法从其他帐户访问它们。如何写入注册表,但允许所有帐户对其进行读写操作


我使用了Python模块_winreg。

您要么需要管理员权限才能写入HKLM,要么接受非全局注册表项。不同版本的windows之间的行为会有所不同。

如果要写入注册表以便所有用户都可以读取,则需要以管理员权限运行程序


您可能更愿意将信息存储在文件中,这样更易于管理。

HKEY_LOCAL_机器/软件/您的软件,需要管理员权限,用于安装时数据,或
HKEY_CURRENT_用户/软件/您的软件
,仅用于与此环境相关的数据(此用户、此配置文件等)

编辑:另一种方法是存储配置文件,并在安装时设置正确的权限

第二次编辑:我在另一条评论中看到,您希望确保只有您的应用程序修改了某些文件,因此您可以存储修改时间。解决方法:

  • 加密不被修改的文件,最好是使用用户生成的密钥
  • 创建一个服务,使用运行该服务的特殊用户安装,并设置权限,以便只有此服务可以访问该文件
我的直觉告诉我,您要求仅通过应用程序修改文件,但无论如何都是非常错误的但是或多或少正确的解决方案必须增加复杂性。您的决定:审查您的需求,可能是您的设计,或者添加一层复杂性,可能是粗糙的


3rd EDIT:拆分你的应用程序,拥有一个管理员应用程序,该应用程序可以使用管理员权限写入
HKLM
并设置设置。正常的用户权限应该足以读取
HKLM

另一种可能是将你的HKLM密钥上的安全性更改为R/W。尽管这种想法在某种程度上是错误的对修改的强烈反对似乎有点牵强

Regedt32具有设置键的功能,因此底层API也必须具有该功能

综上所述,这是一种糟糕的应用程序运行方式,显示出对安全性和安全模型的严重缺乏理解(换句话说,典型的windows开发)


我怎么会变得如此愤世嫉俗……

如果我考虑到这一点,我会这么做的,但应用程序已经编写好了。4个月的开发和编码,在第二个帐户上进行了测试,但它无法读取所需的数据!你可能会发现更改存储设置并不像你想象的那样大。听起来是一个很好的机会一个干净的抽象,然后你就可以不费吹灰之力地更改底层实现。存储在注册表中的数据是文件修改次数。这些是作为安全预防措施,以确保文件不会被除我的软件以外的任何东西修改。是否可以创建和管理配置文件,并在该配置文件下运行应用程序le?通过这种方式,应用程序具有管理员权限,但不需要输入管理员和密码。应用程序将使用密码创建配置文件,然后仅使用该配置文件。如何获得程序的管理员权限?我的安装向导将下载文件并将其解压缩到适当的位置。我需要应用程序具有ad每次启动时都有最小权限。根据定义,它只能由管理员用户使用。为什么需要它?为什么我需要管理员权限?我需要它们,因为我的应用程序必须能够从系统上的每个帐户访问HKLM中的注册表项。目前无法访问,因此它崩溃。你想做什么?一个“应用程序”(不是管理工具)永远不需要依赖于其他帐户。