python操作注冊表的方法實現
在Windows操作系統(tǒng)中,注冊表是一個重要的系統(tǒng)組件,它存儲了系統(tǒng)和應用程序的配置信息。Python提供了winreg模塊,可以用于操作Windows注冊表。本文將介紹如何使用Python操作注冊表,并介紹一些應用場景
1. 導入winreg模塊
在使用winreg模塊之前,我們需要先導入該模塊??梢允褂靡韵麓a導入winreg模塊:
import winreg
2. 打開注冊表
可以使用winreg模塊的OpenKey()方法打開注冊表。該方法的參數是一個表示注冊表項的句柄和一個表示要打開的子項的名稱的字符串。如果要打開的子項不存在,將會拋出一個WindowsError異常。下面是打開注冊表的示例代碼:
import winreg # 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')
在上面的代碼中,我們首先使用winreg.HKEY_CURRENT_USER常量表示HKEY_CURRENT_USER根鍵。然后使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結果保存在變量key中。
3. 讀取注冊表值
可以使用winreg模塊的QueryValue()方法讀取注冊表值。該方法的參數是一個表示注冊表項的句柄和一個表示要讀取的值的名稱的字符串。如果要讀取的值不存在,將會拋出一個WindowsError異常。
下面是讀取注冊表值的示例代碼:
import winreg # 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer') # 讀取StartPage鍵的值 value = winreg.QueryValue(key, 'StartPage') print(value)
在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結果保存在變量key中。然后使用winreg.QueryValue()方法讀取StartPage鍵的值,并將結果保存在變量value中。最后打印value的值。
4. 寫入注冊表值
可以使用winreg模塊的SetValue()方法寫入注冊表值。該方法的參數是一個表示注冊表項的句柄、一個表示要寫入的值的名稱的字符串和一個表示要寫入的值的類型的常量。如果要寫入的值已存在,將會覆蓋原有的值。
下面是寫入注冊表值的示例代碼:
import winreg # 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer', 0, winreg.KEY_WRITE) # 寫入TestValue鍵的值 winreg.SetValue(key, 'TestValue', winreg.REG_SZ, 'Hello, World!')
在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結果保存在變量key中。然后使用winreg.SetValue()方法寫入TestValue鍵的值。需要注意的是,我們需要將要寫入的值的類型作為winreg.SetValue()方法的第三個參數傳入,并使用常量表示類型。
5. 關閉注冊表
在操作注冊表之后,我們需要關閉注冊表。可以使用winreg模塊的CloseKey()方法關閉注冊表。該方法的參數是一個表示注冊表項的句柄。
下面是關閉注冊表的示例代碼:
import winreg # 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer') # 關閉注冊表 winreg.CloseKey(key)
在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結果保存在變量key中。然后使用winreg.CloseKey()方法關閉注冊表。
6. 應用場景
Python操作注冊表的應用場景很多,例如:
- 修改Windows系統(tǒng)設置,如修改桌面背景、修改默認瀏覽器等;
- 配置應用程序,如修改應用程序的默認設置;
- 讀取系統(tǒng)信息,如讀取系統(tǒng)啟動時間、讀取系統(tǒng)版本號等。
import _winreg key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run") #獲取該鍵的所有鍵值,因為沒有方法可以獲取鍵值的個數,所以只能用這種方法進行遍歷 try: i=0 while True: #EnumValue方法用來枚舉鍵值,EnumKey用來枚舉子鍵 content = _winreg.EnumValue(key,i) i += 1 print content except WindowsError: pass # 如果知道鍵的名稱,也可以直接取值 value = _winreg.QueryValueEx(key,"ABC") print value #創(chuàng)建新的鍵 newkey = _winreg.CreateKey(key,"hello") #給新創(chuàng)建的鍵添加頁鍵值 _winreg.SetValueEx(newkey,"HelloNewKey",0,_winreg.REG_SZ,'this is new key content')
#將此腳本添加到注冊表啟動項 p = "C:\Users\Administrator\Desktop\main.py" #在啟動項中添加程序啟動鍵值對 以及 頁值 path = 'python "%s"' % p print path env = _winreg.OpenKeyEx(_winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, _winreg.KEY_SET_VALUE|_winreg.KEY_READ ) print env key = _winreg.EnumKey(env,0)#讀取Run下面的第一個鍵 print key value = _winreg.EnumValue(env,0)#枚舉Run鍵 下面的第一個頁值 print value value = _winreg.EnumValue(env,1)#枚舉Run鍵 下面的第二個頁值 print value value = _winreg.EnumValue(env,2)#枚舉Run鍵 下面的第三個頁值 print value # value = _winreg.EnumValue(env,3)#枚舉Run鍵 下面的第四個頁值 不存在則報錯 # print value #遍歷全部的頁值如下 name_list = [] try: i = 0 while True: name,value,type = _winreg.EnumValue(env,i)#枚舉鍵下的頁值 name_list.append(name) i += 1 print name except WindowsError: pass print name_list if "Agent" not in name_list: _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) else: value = _winreg.QueryValueEx(env,"Agent") #判斷是不是存在此鍵以及鍵的內容是否符合正常的 if "Agent" not in name_list: _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #獲取子鍵的內容 value = _winreg.QueryValueEx(env,"Agent") if value != path: _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #如果存在此key 則會直接修改里面的value
總結
在Windows操作系統(tǒng)中,注冊表是一個重要的系統(tǒng)組件,它存儲了系統(tǒng)和應用程序的配置信息。Python提供了winreg模塊,可以用于操作Windows注冊表??梢允褂脀inreg模塊的OpenKey()方法打開注冊表、使用QueryValue()方法讀取注冊表值、使用SetValue()方法寫入注冊表值和使用CloseKey()方法關閉注冊表。Python操作注冊表的應用場景很多,例如修改Windows系統(tǒng)設置、配置應用程序和讀取系統(tǒng)信息等。
到此這篇關于python操作注冊表的方法實現的文章就介紹到這了,更多相關python操作注冊表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!