- #-*- coding: UTF-8 -*-
- # file: AutoRuns.py
- #import string
- # 导入所需要的模块
- from win32api import *
- from win32con import *
- def GetValues(fullname):
- # GetValues函数用于获得某注册表项下所有的项值
- name=string.split(fullname, '\\', 1)
- # 把完整的项拆分成根项和子项两部分
- # 打开相应的项,为了让该函数更通用
- # 使用了多个判断语句
- if name[0] == 'HKEY_LOCAL_MACHINE':
- key = RegOpenKey(HKEY_LOCAL_MACHINE, name[1], 0, KEY_READ)
- elif name[0] == 'HKEY_CURRENT_USER':
- key = RegOpenKey(HKEY_CURRENT_USER, name[1], 0, KEY_READ)
- elif name[0] == 'HKEY_CLASSES_ROOT':
- key = RegOpenKey(HKEY_CLASSES_ROOT, name[1], 0, KEY_READ)
- elif name[0] == 'HKEY_CURRENT_CONFIG':
- key = RegOpenKey(HKEY_CURRENT_CONFIG, name[1], 0, KEY_READ)
- elif name[0] == 'HKEY_USERS':
- key = RegOpenKey(HKEY_USERS, name[1], 0, KEY_READ)
- else:
- print 'err,no key named %s' (name[0]) info = RegQueryInfoKey(key)
- # 查询项的项值数目
- # 遍历项值获得项值数据
- for i in range(0, info[1]):
- ValueName = RegEnumValue(key, i)
- print string.ljust(ValueName[0], 20), ValueName[1]
- # 调整项值名称长度,使输出更好看RegCloseKey(key)
- # 关闭打开的项# 因为GetValues函数比较通用,所以可以在其他脚本中调用
- # 这里先检查脚本是否被其他脚本调用
- if _name_ == '_main_':
- # 因为要检查的项较多,故将其放在列表中,便于增减
- KeyNames = ['HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run', 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ RunOnce', 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ RunOnceEx', 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run', 'HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\ RunOnce']
- for KeyName in KeyNames:
- # 遍历列表,调用GetValues函数, 输出项值
- print KeyName
- GetValues(KeyName)
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/382735,如需转载请自行联系原作者