簡體   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