Heim  >  Artikel  >  Backend-Entwicklung  >  python读取注册表中值的方法

python读取注册表中值的方法

WBOY
WBOYOriginal
2016-06-06 11:27:532419Durchsuche

在Python的标准库中,_winreg.pyd可以操作Windows的注册表,另外第三方的win32库封装了大量的Windows API,使用起来也很方便。不过这里介绍的是使用_winreg操作注册表,毕竟是Python自带的标准库,无需安装第三方库。

下面的例子是通过Python获取Windows XP下已经安装的补丁号。Windows的补丁号都在“HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Updates”下,通过循环下面所有的目录节点,如果找到的名称符合正则表达式KB(\d{6}).*,则表示是一个补丁号。

从例子可以看出操作起来非常的简单和快速。

代码如下:


# -*- coding: utf-8 -*-
# 获取Windows的已打的补丁号

from _winreg import *
import re

def subRegKey(key, pattern, patchlist):
    # 个数
    count = QueryInfoKey(key)[0]
    for index in range(count):
        # 获取标题
        name = EnumKey(key, index)
        result = patch.match(name)
        if result:
            patchlist.append(result.group(1))
        sub = OpenKey(key, name)
        subRegKey(sub, pattern, patchlist)
        CloseKey(sub)

if __name__ == '__main__':
    patchlist = []
    updates = 'SOFTWARE\\Microsoft\\Updates'
    patch = re.compile('(KB\d{6}).*')
    key = OpenKey(HKEY_LOCAL_MACHINE, updates)
    subRegKey(key, patch, patchlist)
    print 'Count: ' + str(len(patchlist))
    for p in patchlist:
        print p
    CloseKey(key)
 

 
下面内容转自  Python Standard Library12.13 The _winreg Module
(Windows only, New in 2.0) The _winreg module provides a basic interface to the Windows registry database. Example 12-17 demonstrates the module.

Example 12-17. Using the _winreg Module
File: winreg-example-1.py

代码如下:


import _winreg

explorer = _winreg.OpenKey(
    _winreg.HKEY_CURRENT_USER,
    "Software\\Microsoft\\Windows\CurrentVersion\\Explorer"
    )

#list values owned by this registry key
try:
    i = 0
    while 1:
      name, value, type= _winreg.EnumValue(explorer, i)
      print repr(name),
      i += 1
except WindowsError:
    print

value, type = _winreg.QueryValueEx(explorer, "Logon User Name")

print
print "user is", repr(value)


'Logon User Name' 'CleanShutdown' 'ShellState' 'Shutdown Setting'
'Reason Setting' 'FaultCount' 'FaultTime' 'IconUnderline'...

user is u'Effbot'

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn