python操作注冊(cè)表的方法實(shí)現(xiàn)
在Windows操作系統(tǒng)中,注冊(cè)表是一個(gè)重要的系統(tǒng)組件,它存儲(chǔ)了系統(tǒng)和應(yīng)用程序的配置信息。Python提供了winreg模塊,可以用于操作Windows注冊(cè)表。本文將介紹如何使用Python操作注冊(cè)表,并介紹一些應(yīng)用場(chǎng)景
1. 導(dǎo)入winreg模塊
在使用winreg模塊之前,我們需要先導(dǎo)入該模塊??梢允褂靡韵麓a導(dǎo)入winreg模塊:
import winreg
2. 打開注冊(cè)表
可以使用winreg模塊的OpenKey()方法打開注冊(cè)表。該方法的參數(shù)是一個(gè)表示注冊(cè)表項(xiàng)的句柄和一個(gè)表示要打開的子項(xiàng)的名稱的字符串。如果要打開的子項(xiàng)不存在,將會(huì)拋出一個(gè)WindowsError異常。下面是打開注冊(cè)表的示例代碼:
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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。
3. 讀取注冊(cè)表值
可以使用winreg模塊的QueryValue()方法讀取注冊(cè)表值。該方法的參數(shù)是一個(gè)表示注冊(cè)表項(xiàng)的句柄和一個(gè)表示要讀取的值的名稱的字符串。如果要讀取的值不存在,將會(huì)拋出一個(gè)WindowsError異常。
下面是讀取注冊(cè)表值的示例代碼:
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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.QueryValue()方法讀取StartPage鍵的值,并將結(jié)果保存在變量value中。最后打印value的值。
4. 寫入注冊(cè)表值
可以使用winreg模塊的SetValue()方法寫入注冊(cè)表值。該方法的參數(shù)是一個(gè)表示注冊(cè)表項(xiàng)的句柄、一個(gè)表示要寫入的值的名稱的字符串和一個(gè)表示要寫入的值的類型的常量。如果要寫入的值已存在,將會(huì)覆蓋原有的值。
下面是寫入注冊(cè)表值的示例代碼:
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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.SetValue()方法寫入TestValue鍵的值。需要注意的是,我們需要將要寫入的值的類型作為winreg.SetValue()方法的第三個(gè)參數(shù)傳入,并使用常量表示類型。
5. 關(guān)閉注冊(cè)表
在操作注冊(cè)表之后,我們需要關(guān)閉注冊(cè)表。可以使用winreg模塊的CloseKey()方法關(guān)閉注冊(cè)表。該方法的參數(shù)是一個(gè)表示注冊(cè)表項(xiàng)的句柄。
下面是關(guān)閉注冊(cè)表的示例代碼:
import winreg # 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer') # 關(guān)閉注冊(cè)表 winreg.CloseKey(key)
在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.CloseKey()方法關(guān)閉注冊(cè)表。
6. 應(yīng)用場(chǎng)景
Python操作注冊(cè)表的應(yīng)用場(chǎng)景很多,例如:
- 修改Windows系統(tǒng)設(shè)置,如修改桌面背景、修改默認(rèn)瀏覽器等;
- 配置應(yīng)用程序,如修改應(yīng)用程序的默認(rèn)設(shè)置;
- 讀取系統(tǒng)信息,如讀取系統(tǒng)啟動(dòng)時(shí)間、讀取系統(tǒng)版本號(hào)等。
import _winreg key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run") #獲取該鍵的所有鍵值,因?yàn)闆]有方法可以獲取鍵值的個(gè)數(shù),所以只能用這種方法進(jìn)行遍歷 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)建的鍵添加頁(yè)鍵值 _winreg.SetValueEx(newkey,"HelloNewKey",0,_winreg.REG_SZ,'this is new key content')
#將此腳本添加到注冊(cè)表啟動(dòng)項(xiàng) p = "C:\Users\Administrator\Desktop\main.py" #在啟動(dòng)項(xiàng)中添加程序啟動(dòng)鍵值對(duì) 以及 頁(yè)值 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下面的第一個(gè)鍵 print key value = _winreg.EnumValue(env,0)#枚舉Run鍵 下面的第一個(gè)頁(yè)值 print value value = _winreg.EnumValue(env,1)#枚舉Run鍵 下面的第二個(gè)頁(yè)值 print value value = _winreg.EnumValue(env,2)#枚舉Run鍵 下面的第三個(gè)頁(yè)值 print value # value = _winreg.EnumValue(env,3)#枚舉Run鍵 下面的第四個(gè)頁(yè)值 不存在則報(bào)錯(cuò) # print value #遍歷全部的頁(yè)值如下 name_list = [] try: i = 0 while True: name,value,type = _winreg.EnumValue(env,i)#枚舉鍵下的頁(yè)值 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") #判斷是不是存在此鍵以及鍵的內(nèi)容是否符合正常的 if "Agent" not in name_list: _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #獲取子鍵的內(nèi)容 value = _winreg.QueryValueEx(env,"Agent") if value != path: _winreg.SetValueEx(env,"Agent",0,_winreg.REG_SZ,path) #如果存在此key 則會(huì)直接修改里面的value
總結(jié)
在Windows操作系統(tǒng)中,注冊(cè)表是一個(gè)重要的系統(tǒng)組件,它存儲(chǔ)了系統(tǒng)和應(yīng)用程序的配置信息。Python提供了winreg模塊,可以用于操作Windows注冊(cè)表。可以使用winreg模塊的OpenKey()方法打開注冊(cè)表、使用QueryValue()方法讀取注冊(cè)表值、使用SetValue()方法寫入注冊(cè)表值和使用CloseKey()方法關(guān)閉注冊(cè)表。Python操作注冊(cè)表的應(yīng)用場(chǎng)景很多,例如修改Windows系統(tǒng)設(shè)置、配置應(yīng)用程序和讀取系統(tǒng)信息等。
到此這篇關(guān)于python操作注冊(cè)表的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python操作注冊(cè)表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用pandas對(duì)矢量化數(shù)據(jù)進(jìn)行替換處理的方法
下面小編就為大家分享一篇使用pandas對(duì)矢量化數(shù)據(jù)進(jìn)行替換處理的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python ARP掃描與欺騙實(shí)現(xiàn)全程詳解
這篇文章主要介紹了Python 實(shí)現(xiàn)ARP掃描與欺騙,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-10-10Python設(shè)計(jì)模式之代理模式實(shí)例詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之代理模式,結(jié)合實(shí)例形式較為詳細(xì)的分析了代理模式的概念、原理及Python定義、使用代理模式相關(guān)操作技巧,需要的朋友可以參考下2019-01-01一文詳解PyQt5中實(shí)現(xiàn)不規(guī)則窗口的顯示
這篇文章主要為大家詳細(xì)介紹了Python?PyQt5中實(shí)現(xiàn)不規(guī)則窗口的顯示的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12python將字典內(nèi)容存入mysql實(shí)例代碼
這篇文章主要介紹了python將字典內(nèi)容存入mysql實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Pygame與OpenCV聯(lián)合播放視頻并保證音畫同步
Pygame的Movie模塊已經(jīng)廢棄多年,本文主要介紹了Pygame與OpenCV聯(lián)合播放視頻并保證音畫同步,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12