一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python 操作注冊表

 星光閃亮圖書館 2017-12-28
   通過Python操作注冊表有兩種方式,第一種是通過Python的內(nèi)置模塊 _winreg;另一種方式就是Win32 Extension For Python 的win32api模塊,但是需要進(jìn)行額外的安裝。這里主要給出一些_winreg和win32api的Demo代碼。
1、 _winreg
可以參考官方的參考文檔:
http://docs./library/_winreg.html
http://www./doc/2.6.2/library/_winreg.html
1.1 讀取 
  1. import _winreg  
  2.    
  3.  key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")  
  4.    
  5.   #獲取該鍵的所有鍵值,因?yàn)闆]有方法可以獲取鍵值的個(gè)數(shù),所以只能用這種方法進(jìn)行遍歷  
  6.   try:  
  7.      i = 0  
  8.  while1:  
  9.  #EnumValue方法用來枚舉鍵值,EnumKey用來枚舉子鍵  
  10.           name, value, type = _winreg.EnumValue(key, i)  
  11.  print repr(name),  
  12.          i +=1  
  13.   except WindowsError:  
  14.  print  
  15.    
  16.   #如果知道鍵的名稱,也可以直接取值  
  17.   value, type = _winreg.QueryValueEx(key, "EnableAutoTray")  

1.2 創(chuàng)建、修改
  1. import _winreg  
  2.    
  3.  key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")  
  4.    
  5.  #刪除鍵  
  6.  _winreg.DeleteKey(key, "Advanced")  
  7.     
  8.  #刪除鍵值  
  9.  _winreg.DeleteValue(key, "IconUnderline")  
  10.     
  11.  #創(chuàng)建新的鍵  
  12.  newKey = _winreg.CreateKey(key,"MyNewkey")  
  13.     
  14.  #給新創(chuàng)建的鍵添加鍵值  
  15.  _winreg.SetValue(newKey,"ValueName",0,"ValueContent")  

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

2、win32api

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

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

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

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

上面的代碼的執(zhí)行不會像預(yù)想那樣創(chuàng)建如下的鍵:

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows"

而是會創(chuàng)建如下的鍵:

"HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows"

因?yàn)樵?4位的windows操作系統(tǒng)下,64位的程序和32位程序的注冊表是分開的,32位應(yīng)用程序?qū)ψ员淼牟僮鳎ㄗx、寫)都會被重定向到Wow6432Node下面, 64位應(yīng)用程序的訪問注冊表的行為則沒有變化。因此如果我們的32位應(yīng)用程序確實(shí)要訪問64位程序所用到的注冊表的話,就會有點(diǎn)問題。由于_winreg本身的問題,它對這種情況的支持不太充分,對windows api的封裝有一些bug,這個(gè)時(shí)候就需要用到 win32api 模塊。

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

  1. import win32api   
  2. import win32con  
  3.    
  4. key = win32api.RegCreateKeyEx(win32con.HKEY_LOCAL_MACHINE, r"Software\Microsoft\Windows", win32con.WRITE_OWNER |win32con.KEY_WOW64_64KEY|win32con.KEY_ALL_ACCESS)  
  5. win32api.RegSetValueEx (key,"MyNewkey", 0, win32con.REG_SZ, keyValue)  
上面的win32con.KEY_WOW64_64KEY意思就是直接訪問64位注冊表,不要進(jìn)行重定向,默認(rèn)的參數(shù)是win32con.KEY_WOW64_32KEY。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产丝袜极品黑色高跟鞋| 邻居人妻人公侵犯人妻视频| 微拍一区二区三区福利| 欧美日韩亚洲精品在线观看| 日本欧美一区二区三区在线播| 亚洲国产丝袜一区二区三区四| 五月婷婷欧美中文字幕| 麻豆看片麻豆免费视频| 欧美不雅视频午夜福利| 久久偷拍视频免费观看| 国产在线成人免费高清观看av| 日韩精品一级片免费看| 视频一区中文字幕日韩| 超碰在线免费公开中国黄片| 国产亚洲神马午夜福利| 在线观看免费无遮挡大尺度视频 | 日韩成人动作片在线观看| 国产一区二区三区香蕉av| 女生更色还是男生更色 | 国产一级内片内射免费看| 永久福利盒子日韩日韩| 欧美人妻盗摄日韩偷拍| 日韩偷拍精品一区二区三区| 日韩人妻av中文字幕| 九九视频通过这里有精品| 欧美同性视频免费观看| 精品推荐久久久国产av| 国产精品白丝久久av| 欧美一本在线免费观看| 欧美一区二区三区喷汁尤物| 精品偷拍一区二区三区| 中文字幕精品一区二区年下载| 日本国产欧美精品视频| 91亚洲熟女少妇在线观看| 日本黄色录像韩国黄色录像| 色无极东京热男人的天堂| 国产av一区二区三区四区五区| 日韩精品视频高清在线观看| 91麻豆精品欧美视频| 午夜福利网午夜福利网| 熟女白浆精品一区二区|