国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

操作Windows注冊表的簡單的Python程序制作教程

2020-02-23 00:35:20
字體:
來源:轉載
供稿:網友

通過Python操作注冊表有兩種方式,第一種是通過Python的內置模塊 _winreg;另一種方式就是Win32 Extension For Python 的win32api模塊,但是需要進行額外的安裝。這里主要給出一些_winreg和win32api的Demo代碼。

 

1、 _winrg

可以參考官方的參考文檔:

http://docs.python.org/library/_winreg.html

http://www.python.org/doc/2.6.2/library/_winreg.html

 

1.1 讀取 
 

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

1.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")

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

2、 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 _winregkey = _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 模塊。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 防城港市| 东源县| 景谷| 郓城县| 凌源市| 平乐县| 增城市| 交口县| 安新县| 普洱| 抚顺县| 新宁县| 福鼎市| 黄平县| 河源市| 康平县| 海盐县| 漳州市| 江城| 周宁县| 普兰县| 静安区| 福泉市| 航空| 泸西县| 萝北县| 雷波县| 元氏县| 濮阳县| 城口县| 福贡县| 千阳县| 碌曲县| 高密市| 胶南市| 建湖县| 惠来县| 皮山县| 星座| 宁武县| 密山市|