簡體   English   中英

在編輯之前使用 python 腳本將 Windows 注冊表備份到文件

[英]Using a python script to backup Windows Registry to file before editing

我正在嘗試創建一個腳本來編輯窗口的注冊表。 作為回退,我想創建注冊表的備份並將其保存在工作目錄(或其他目錄,但這是以后的目錄)中。 有沒有辦法利用python的強大功能先備份注冊表?

到目前為止,我發現這樣做的唯一方法可能是調用 reg.exe,但我一直在尋找更適合 Python 本身的東西。

謝謝!

注冊表是一個非常以 Windows 為中心的構造,盡管我沒有對這個主題進行任何研究,但我敢打賭,在 Python 中沒有“本機”備份注冊表的方法。 我認為您已經有了答案並在 Python 中創建一個進程並讓它運行 Reg Export 是完成您想要的最佳方式。

但是,如果由於某種原因您不想運行 Reg.exe 或調用任何外部進程,我建議您在將其編輯為 .reg 文件之前編寫並保存每個注冊表項,如下所示:

[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Acrobat]
[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Acrobat\9.0]
[HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Adobe Acrobat\9.0\Installer]
"AppInit_DLLs"="acaptuser64.dll"

這種方法將確保您不依賴任何外部實用程序,並且是最接近 Python 中“本機”注冊表備份的方法。

如果程序是 UAC 提升的,您可以使用winreg模塊的SaveKey功能:

import winreg, win32security, win32api # use _winreg for older versions of Python
with winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, '') as handle: # Replace with the desired key
    win32security.AdjustTokenPrivileges(win32security.OpenProcessToken(win32api.GetCurrentProcess(), 40), 0, [(win32security.LookupPrivilegeValue(None, 'SeBackupPrivilege'), 2)]) # Basically, adjusts permissions for the interpreter to allow registry backups
    winreg.SaveKey(handle, 'C:\\REGBACKUP') # Replace with the desired file path

然后,您可以加載它以與winreg庫一起使用:

import winreg
with winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, '', 'C:\\REGBACKUP') as handle:
    ...

推薦的方法是創建一個“還原點”,它將創建一個備份,您可以將注冊表還原到該備份。 我不知道執行此操作的 API 是什么,但我很確定它存在。

當然,您也可以手動執行此操作,但這是一個不同的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM