場景
- 我們在
Windows
上開發Python
腳本時,需要讀取系統設置或者判斷某個軟件是否安裝,禁用自動更新等都需要對註冊表進行修改,可以說非常常見。那麼Python
有什麼模塊可以修改註冊表呢?
說明
-
Python3
自帶的winreg
模塊可以操作註冊表,並不需要增加下載第三方模塊。對於Python2
用的是_winreg
模塊. -
Windows
上凡是修改註冊表都需要管理員模式,所以運行Python
腳本時還是需要管理員權限的。 -
winreg
對註冊表的增加項,增加鍵值對,值類型都有對應的函數.
例子
- 以下例子我們用
Python
寫了WIN10
禁用自動更新的修改註冊表部分.
import winreg
import os
def TestWinReg():
explorer = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE,"SOFTWARE\\Policies\\Microsoft\\Windows")
try:
i = 0
while 1:
name = winreg.EnumKey(explorer,i)
print(repr(name))
i += 1
except WindowsError as err:
print("OS error: {0}".format(err))
def AddForbidUpdateRegKeyValue(key,subKey,itemName,itemType,itemvalue):
try:
with winreg.CreateKey(key,subKey) as keyHandle:
winreg.SetValueEx(keyHandle,itemName,0,itemType,itemvalue)
except OSError as err:
print("error: ",repr(err))
pass
def RestoreUpdateAutoRegKeyValue(key,subKey,itemName):
try:
with winreg.OpenKey(key,subKey,0,winreg.KEY_SET_VALUE) as keyHandle:
winreg.DeleteValue(keyHandle,itemName)
except OSError as err:
print("error: ",repr(err))
pass
if __name__ == "__main__":
AddForbidUpdateRegKeyValue(winreg.HKEY_LOCAL_MACHINE,
"SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU",
"AUOptions",winreg.REG_DWORD,2)
AddForbidUpdateRegKeyValue(winreg.HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
"NoWindowsUpdate",winreg.REG_DWORD,1)
圖1: