zoukankan      html  css  js  c++  java
  • python修改注册表

    与注册表操作相关的函数可以分为打开注册表、关闭注册表、读取项值、c添加项值、添加项,以及删除项等几类。

    表1   Windows注册表基本项

    项名

    描述

    HKEY_CLASSES_ROOT

    是HKEY_LOCAL_MACHINESoftware 的子项,保存打开文件所对应的应用程序信息

    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)

    两个函数的参数一样。参数含义如下:

    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

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    2. 关闭注册表

    RegCloseKey(key)

    其参数只有一个,其含义如下:

    l Key:已经打开的注册表项的句柄。

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    如win32api.RegCloseKey(key)

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    3. 读取项值

    RegQueryValue(key,subKey) 读取项的默认值

    RegQueryValueEx(key,valueName) 读取某一项值

    对于RegQueryValue,其参数含义如下:

    l Key:已打开的注册表项的句柄。

    l subKey:要操作的子项。

    对于RegQueryValueEx,其参数含义如下:

    l Key:已经打开的注册表项的句柄。

    l valueName:要读取的项值名称。

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    import win32api
    import win32con
    # 打开“HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet Explorer”项
    >>> key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,
    'SOFTWARE\Microsoft\Internet Explorer',0, win32con.KEY_ALL_ACCESS)
    >>> win32api.RegQueryValue(key,'') # 读取项的默认值
    ''         # 输出为空,表示其默认值未设置
    #读取项值名称为Version的项值数据,也就是Internet Explorer的版本
    >>> win32api.RegQueryValueEx(key,'Version') 
    ('6.0.2900.2180', 1)
    >>> win32api.RegQueryInfoKey(key)  # RegQueryInfoKey函数查询项的基本信息
    (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_MACHINESOFTWAREMicrosoftInternet Explorer”
    的默认值设为python
    >>> win32api.RegSetValue(key,'',win32con.REG_SZ,'python')
    # 将其“Version”设置为7.0.2900.2180
    >>> win32api.RegSetValueEx(key,'Version',0,win32con.REG_SZ,'7.0.2900.2180')

    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    5. 添加、删除项

    RegCreateKey(key,subKey) 向注册表中添加项

    RegDeleteKey(key,subKey) 删除注册表中的项

    其参数含义相同,参数含义分别如下:

    l Key:已经打开的注册表项的句柄。

    subKey:所要操作(添加或删除)的子项。

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    # 向“HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet Explorer”添加子项“Python”
    >>> win32api.RegCreateKey(key,'Python')
      # 新创建的子项的句柄
    # 删除刚才创建的子项“Python”
    >>> win32api.RegDeleteKey(key,'Python')
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    6. 错误处理

    ImportError: No module named win32api出现异常

    实际是需要安装和自己python兼容的win32all 在http://starship.python.net/crew/mhammond/downloads/ 可以下载适合自己的版本,安装;记住必须重启才可生效。

  • 相关阅读:
    Move Zeroes
    Intersection of Two Arrays II
    Intersection of Two Arrays
    Create Maximum Number
    Leetcode version 2
    JDBC学习笔记
    九章算法基础班
    九章算法强化班
    LeetCode
    Amazon High Frequent 9 problems
  • 原文地址:https://www.cnblogs.com/hester/p/5167061.html
Copyright © 2011-2022 走看看