繁体   English   中英

Python中所有用户的注册表项

[英]Registry Entries for all users in Python

我编写了一个在注册表中存储一些内容的应用程序。 刚开始时,我将它们添加到了HKEY_LOCAL_MACHINE,但是一直在写入权限错误。 因此,建议我使用HKEY_CURRENT_USER,该方法一直有效,直到我意识到无法从另一个帐户访问它们。 如何写入注册表但允许所有帐户访问读写?

我使用了Python模块_winreg。

HKEY_LOCAL_MACHINE/Software/YourSoftware需要管理员权限,用于安装时数据,或HKEY_CURRENT_USER/Software/YourSoftware ,仅用于与此环境相关的数据(此用户,此配置文件等)

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

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

  • 加密文件不要修改,最好用用户生成的密钥
  • 制作服务,使用运行它的特殊用户进行安装,并授予权限,只有此服务才能访问该文件

我的直觉表明你的要求只是由你的应用程序修改文件,但在任何帐户下都是非常错误的,但或多或少正确的解决方案必须增加额外的复杂性。 您的决定:检查您的要求,可能还有您的设计,或者增加一层复杂性,可能还有可能。

第三次编辑:拆分你的应用程序,有一个管理员应用程序,可以通过管理员权限写入HKLM并设置设置。 普通用户权限足以阅读HKLM

您可能需要管理员权限才能写入HKLM,或者解决非全局注册表项。 不同版本的Windows之间的行为会有所不同。

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

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

另一种可能是将任何人的HKLM密钥的安全性更改为R / W。 虽然这在某种程度上反对修改的安全性的想法似乎有点延伸。

Regedt32可以设置密钥,因此基础API也必须具有密钥。

总而言之,这是运行应用程序的一种搞砸的方式,显示出对安全性和安全性模型缺乏了解。 (换句话说,典型的Windows开发。)

我怎么会这么愤世嫉俗......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM