如何利用python操作注冊(cè)表
注冊(cè)表是windows管理配置系統(tǒng)運(yùn)行參數(shù)的一個(gè)核心數(shù)據(jù)庫(kù)。在這個(gè)數(shù)據(jù)庫(kù)里整合集成了全部系統(tǒng)和應(yīng)用程序的初始化信息;其中包含了硬件設(shè)備的說(shuō)明、相互關(guān)聯(lián)的應(yīng)用程序與文檔文件、窗口顯示方式、網(wǎng)絡(luò)連接參數(shù)、甚至有關(guān)系到計(jì)算機(jī)安全的網(wǎng)絡(luò)共享設(shè)置 。
1.讀取
讀取用的方法是OpenKey方法:打開(kāi)特定的key
winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ)
例子:此例子是顯示了本機(jī)網(wǎng)絡(luò)配置的一些注冊(cè)表項(xiàng)
import winregkey = winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r'SYSTEMCurrentControlSetServicesTcpipParametersInterfaces{0E184877-D910-4877-B 4C2-04F487B6DBB7}')#獲取該鍵的所有鍵值,遍歷枚舉try: i=0 while 1: #EnumValue方法用來(lái)枚舉鍵值,EnumKey用來(lái)枚舉子鍵 name,value,type = _winreg.EnumValue(key,i) print repr(name),value,type i+=1except WindowsError: print #假如知道鍵名,也可以直接取值value,type = _winreg.QueryValueEx(key,'DhcpDefaultGateway')print '默認(rèn)網(wǎng)關(guān)地址----',value,type
2.創(chuàng)建 修改注冊(cè)表
創(chuàng)建key:_winreg.CreateKey(key,sub_key)
刪除key: _winreg.DeleteKey(key,sub_key)
刪除鍵值:_winreg.DeleteValue(key,value)
給新建的key賦值:_winreg.SetValue(key,sub_key,type,value)
例子:
#!/usr/bin/env python#coding=utf-8import winreg key=winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r'SoftwareMicrosoftWindowsCurrentVersionExplorer')#刪除鍵_winreg.DeleteKey(key, 'Advanced')#刪除鍵值_winreg.DeleteValue(key, 'IconUnderline')#創(chuàng)建新的newKey = _winreg.CreateKey(key,'MyNewkey') #給新創(chuàng)建的鍵添加鍵值_winreg.SetValue(newKey,'ValueName',0,'ValueContent')
3. 權(quán)限問(wèn)題
寫(xiě)完的Python腳本必須用管理員權(quán)限運(yùn)行,才能對(duì)注冊(cè)表進(jìn)行寫(xiě)操作。否則會(huì)報(bào)PermissionError異常這個(gè)時(shí)候需要調(diào)用Windows的API,重新啟動(dòng)一遍程序 runas administrator,將原來(lái)的程序退出。
代碼也很簡(jiǎn)單
from __future__ import print_functionimport ctypes, sysdef is_admin(): try: return ctypes.windll.shell32.IsUserAnAdmin() except: return Falseif is_admin(): # 將要運(yùn)行的代碼加到這里else: if sys.version_info[0] == 3: ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, __file__, None, 1) else:#in python2.x ctypes.windll.shell32.ShellExecuteW(None, u'runas', unicode(sys.executable), unicode(__file__), None, 1)
網(wǎng)上搜的都是python2的, 自己寫(xiě)代碼的時(shí)候總是搞不正確的包,然后用
pip search winreg
結(jié)果是:
winreg-helpers (0.1.1) - Helper functions for reading/writing to the Windows Registry.
裝這個(gè)包就可以了。
解決問(wèn)題,每次在鏈接vpn后,發(fā)現(xiàn)browser就打不開(kāi)了,需要手動(dòng)去將其去掉。現(xiàn)在只要執(zhí)行一下以下這個(gè)腳本,就解決了問(wèn)題:
import winregINTERNET_SETTINGS = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r’SoftwareMicrosoftWindowsCurrentVersionInternet Settings’, 0, winreg.KEY_ALL_ACCESS)def set_key(name, value): _, reg_type = winreg.QueryValueEx(INTERNET_SETTINGS, name) winreg.SetValueEx(INTERNET_SETTINGS, name, 0, reg_type, value)set_key(’ProxyEnable’, 0)#set_key(’ProxyOverride’, u’*.local;<local>’) # Bypass the proxy for localhost#set_key(’ProxyServer’, u’X.X.X.X:8080’)
測(cè)試一下,通過(guò)。
以上就是如何利用python操作注冊(cè)表的詳細(xì)內(nèi)容,更多關(guān)于python 注冊(cè)表的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. Python基于requests庫(kù)爬取網(wǎng)站信息2. vscode運(yùn)行php報(bào)錯(cuò)php?not?found解決辦法3. Python使用Selenium自動(dòng)進(jìn)行百度搜索的實(shí)現(xiàn)4. Java commons-httpclient如果實(shí)現(xiàn)get及post請(qǐng)求5. 一文帶你徹底理解Java序列化和反序列化6. 微信小程序?qū)崿F(xiàn)商品分類(lèi)頁(yè)過(guò)程結(jié)束7. PHP laravel實(shí)現(xiàn)導(dǎo)出PDF功能8. JS中6個(gè)對(duì)象數(shù)組去重的方法9. 資深程序員:給Python軟件開(kāi)發(fā)測(cè)試的25個(gè)忠告!10. python中文本字符處理的簡(jiǎn)單方法記錄

網(wǎng)公網(wǎng)安備