[Python]_[初級]_[修改註冊表-禁用WIN10的自動更新註冊表部分]

場景

  1. 我們在Windows上開發Python腳本時,需要讀取系統設置或者判斷某個軟件是否安裝,禁用自動更新等都需要對註冊表進行修改,可以說非常常見。那麼Python有什麼模塊可以修改註冊表呢?

說明

  1. Python3自帶的winreg模塊可以操作註冊表,並不需要增加下載第三方模塊。對於Python2用的是_winreg模塊.

  2. Windows上凡是修改註冊表都需要管理員模式,所以運行Python腳本時還是需要管理員權限的。

  3. winreg對註冊表的增加項,增加鍵值對,值類型都有對應的函數.

例子

  1. 以下例子我們用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:
在這裏插入圖片描述

參考

禁用自動更新批處理腳本

Python 3 Document winreg — Windows registry access

知乎-如何關閉win10的自動更新

微軟-如何關閉WIN10系統自動更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章