亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python實現操縱控制windows注冊表的方法分析

系統 1749 0

本文實例講述了Python實現操縱控制windows注冊表的方法。分享給大家供大家參考,具體如下:

使用_winreg模塊的話

基本概念:

  • KEY 鍵
  • Value 值

函數和作用:

CloseKey() - 關閉一個Key
ConnectRegistry() - 鏈接到其他機器的注冊表
CreateKey() - 創建一個Key
DeleteKey() - 刪除一個Key
DeleteValue() - 刪除一個Key里面的值(value)
EnumKey() - 為已經打開的Key里面的子鍵建立索引
EnumValue() - 為打開的鍵中的值建立索引
FlushKey() - 回寫所有的鍵屬性改變到注冊表
LoadKey() - 從指定文件讀入鍵信息
OpenKey() - 打開一個鍵
OpenKeyEx()
QueryValue() - 在注冊表中檢索一個鍵的路徑
QueryValueEx() - 注冊表中檢索一個鍵的路徑
QueryInfoKey() - 返回關于鍵的信息
SaveKey() - 保存鍵到文件
SetValue() - 設置一個鍵
SetValueEx() - 設置一個值

1、讀取

            
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")
 #獲取該鍵的所有鍵值,因為沒有方法可以獲取鍵值的個數,所以只能用這種方法進行遍歷
 try:
  i = 0
while1:
#EnumValue方法用來枚舉鍵值,EnumKey用來枚舉子鍵
     name, value, type = _winreg.EnumValue(key, i)
print repr(name),
    i +=1
 except WindowsError:
print
 #如果知道鍵的名稱,也可以直接取值
 value, type = _winreg.QueryValueEx(key, "EnableAutoTray")


          

2 、創建、修改

            
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")
#刪除鍵
_winreg.DeleteKey(key, "Advanced")
#刪除鍵值
_winreg.DeleteValue(key, "IconUnderline")
#創建新的鍵
newKey = _winreg.CreateKey(key,"MyNewkey")
#給新創建的鍵添加鍵值
_winreg.SetValue(newKey,"ValueName",0,"ValueContent")


          

3、 訪問遠程注冊表

            
#第二參數必須是HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE等預先定義好的值,拿到返回的key后就可以進行操作了
key = _winreg.ConnectRegisty("IP地址或者機器名",_winreg.HKEY_CURRENT_USER)


          

4、win32api

win32api 和 _winreg 的方法很類似,一般是多了一個前綴”Reg”,使用方法很基本上一樣,這里就不給具體的Demo代碼了。

就一般的應用來說,使用_winreg就足夠了,但是_winreg有一個問題,如果Python是32位的,并且是運行在64位的操作系統上時就會有一點小問題,由于操作系統會進行注冊表的重定向,32位的程序無法訪問64位應用程序的注冊表。在Python2.6以前這個問題都沒有解決,在Python2.7中通過補丁的形式修正了這個問題(http://bugs.python.org/issue7347)。

通過例子來說明一下這個問題,假設我們的操作系統是64位的,然后在上面安裝了32位的Python,看如下的Python代碼:

            
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,r"Software\Microsoft\Windows")
newKey = _winreg.CreateKey(key,"MyNewkey")


          

上面的代碼的執行不會像預想那樣創建如下的鍵:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows

而是會創建如下的鍵:

HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows

因為在64位的windows操作系統下,64位的程序和32位程序的注冊表是分開的,32位應用程序對注冊表的操作(讀、寫)都會被重定向到Wow6432Node下面, 64位應用程序的訪問注冊表的行為則沒有變化。因此如果我們的32位應用程序確實要訪問64位程序所用到的注冊表的話,就會有點問題。由于_winreg本身的問題,它對這種情況的支持不太充分,對windows api的封裝有一些bug,這個時候就需要用到 win32api 模塊。

下面用win32api提供的方法來修改上面的代碼如下:

            
import win32api
import win32con
key = win32api.RegCreateKeyEx(win32con.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows", win32con.WRITE_OWNER |win32con.KEY_WOW64_64KEY|win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx (key,"MyNewkey", 0, win32con.REG_SZ, keyValue)


          

上面的win32con.KEY_WOW64_64KEY意思就是直接訪問64位注冊表,不要進行重定向,默認的參數是win32con.KEY_WOW64_32KEY。

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产区成人综合色在线 | 午夜国产精品久久久久 | 手机福利在线观看 | 韩国色三级伦不卡高清在线观看 | 国产欧美一区二区三区在线 | 天天操天天干天天玩 | 99精品国产免费久久国语 | 久久香蕉国产线看免费 | 国产成人h综合亚洲欧美在线 | 毛片免费永久不卡视频观看 | 国产综合另类小说色区色噜噜 | 337p欧洲日本大胆艺术 | 国产伦精品一区二区三区 | 日韩在线看片中文字幕不卡 | 精品动漫中文字幕一区二区三区 | 毛片网站免费在线观看 | 久久视频精品 | 亚欧美视频 | 伊人这里只有精品 | 免费高清在线爱做视频 | 成年女人免费看 | 国产成人一区二区三区高清 | 欧美专区一区二区三区 | 精品九九在线 | 国产综合色在线视频播放线视 | 一国产大片在线观看 | 久草在线观看免费 | 奇米影视中文字幕 | 欧美影院一区 | 中文字幕伦理聚合第一页 | 国产日本欧美亚洲精品视 | 日韩中文字幕免费在线观看 | 四虎成人精品在永久在线观看 | 婷婷久久综合 | 波多野结衣亚洲一区 | 亚洲精品视频免费在线观看 | 999资源站| 欧美一区二区三区婷婷月色 | 久久99热久久精品在线6 | 国产亚洲精aa在线观看不卡 | 26uuu另类欧美亚洲曰本 |