python之操作注冊表


與注冊表操作相關的函數可以分為打開注冊表、關閉注冊表、讀取項值、c添加項值、添加項,以及刪除項等幾類。

這里寫圖片描述

 

 

描述

HKEY_CLASSES_ROOT,是HKEY_LOCAL_MACHINE\Software 的子項,保存打開文件所對應的應用程序信息
HKEY_CURRENT_USER,是HKEY_USERS的子項,保存當前用戶的配置信息
HKEY_LOCAL_MACHINE,保存計算機的配置信息,針對所有用戶
HKEY_USERS,保存計算機上的所有以活動方式加載的用戶配置文件
HKEY_CURRENT_CONFIG,保存計算機的硬件配置文件信息

通過使用win32api模塊和win32con模塊,python可以方便地訪問注冊表,並對其進行打開、關閉、添加項、刪除項,以及添加、修改項值等操作。

1. 打開注冊表

RegOpenKey(key, subkey, reserved, sam) RegOpenKeyEx(key, subkey, reserved, sam)
  • 1
  • 2

兩個函數的參數一樣。參數含義如下:
l Key:必須為表1中列出的項。
l SubKey:要打開的子項。
l Reserved:必須為0。
l Sam:對打開的子項進行的操作,包括win32con.KEY_ALL_ACCESS、win32con.KEY_READ、win32con.KEY_WRITE等

#如 key=win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software',0,win32con.KEY_READ) print key

1

  • 2
  • 3
  • 4

.2. 關閉注冊表

RegCloseKey(key)
  • 1

其參數只有一個,其含義如下:
l Key:已經打開的注冊表項的句柄。

如win32api.RegCloseKey(key)
  • 1

.3. 讀取項值
RegQueryValue(key,subKey) 讀取項的默認值
RegQueryValueEx(key,valueName) 讀取某一項值

對於RegQueryValue,其參數含義如下:
l Key:已打開的注冊表項的句柄。
l subKey:要操作的子項。

對於RegQueryValueEx,其參數含義如下:
l Key:已經打開的注冊表項的句柄。
l valueName:要讀取的項值名稱。

import win32api import win32con
  • 1
  • 2

打開“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”項

key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
'SOFTWARE\\Microsoft\\Internet Explorer',0, win32con.KEY_ALL_ACCESS)
  • 1
  • 2

win32api.RegQueryValue(key,”) # 讀取項的默認值
” # 輸出為空,表示其默認值未設置

讀取項值名稱為Version的項值數據,也就是Internet Explorer的版本

win32api.RegQueryValueEx(key,'Version') 
  • 1

(‘6.0.2900.2180’, 1)

>>> win32api.RegQueryInfoKey(key) # RegQueryInfoKey函數查詢項的基本信息
  • 1

(26, 7, 128178812229687500L) # 返回項的子項數目、項值數目,以及最后一次修改時間


.4. 設置項值

RegSetValueEx(key,valueName,reserved,type,value) 要修改或重新設置注冊表某一項的項值。如果項值存在,則修改該項值,如果不存在,則添加該項值。

RegSetValue(key,subKey,type,value) 設置項的默認值

對於RegSetValueEx,其參數含義如下:
l Key:要設置的項的句柄。
l valueName:要設置的項值名稱。
l Reserved:保留,可以設為0。
l Type:項值的類型。
l Value:所要設置的值。

對於RegSetValue,其參數含義如下:
l Key:已經打開的項的句柄。
l subKey:所要設置的子項。
l Type:項值的類型,必須為win32con.REG_SZ。
l Value:項值數據,為字符串。


將“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”的默認值設為python

>>> win32api.RegSetValue(key,'',win32con.REG_SZ,'python')
  • 1

將其“Version”設置為7.0.2900.2180

win32api.RegSetValueEx(key,'Version',0,win32con.REG_SZ,'7.0.2900.2180')
  • 1

.5. 添加、刪除項

RegCreateKey(key,subKey) 向注冊表中添加項

RegDeleteKey(key,subKey) 刪除注冊表中的項

其參數含義相同,參數含義分別如下:

l Key:已經打開的注冊表項的句柄。

subKey:所要操作(添加或刪除)的子項。


向“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer”添加子項“Python”

# 新創建的子項的句柄 win32api.RegCreateKey(key,'Python') 刪除剛才創建的子項“Python” win32api.RegDeleteKey(key,'Python')
  • 1
  • 2
  • 3
  • 4
  • 5

.6. 錯誤處理

ImportError: No module named win32api #出現異常
  • 1

實際是需要安裝和自己python兼容的win32all(pywin32)
http://starship.python.net/crew/mhammond/downloads/ 可以下載適合自己的版本,安裝;記住必須重啟才可生效。

關於錯誤,你寫錯根本運行不起來,不用擔心,返回值問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM