winreg操作windows注册表详解示例

#coding:utf-8

#=====================================================================
#=====本程序演示了WINREG操作WINDOWS注册表的所有常见操作
#=====作者:dengpeiyou QQ:86074731 2019.01.12
#=====================================================================
import ctypes
import winreg
import os

#===============================================================打开子键
key=None
try:
key=winreg.OpenKey(winreg.HKEY_CURRENT_USER,r"software")
except Exception as error_txt:
#提示
#ctypes.windll.user32.MessageBoxW(None,str(error_txt),‘打开‘,0)
ctypes.windll.user32.MessageBoxW(None,‘打开注册表异常‘,‘打开‘,0)
os._exit(0)

#如果打开则关闭
if key:
winreg.CloseKey(key)

#================================================================新建(修改)子键
winreg.CreateKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou‘)
winreg.CreateKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou\testa‘)
#添加键值
list_keys=[(‘aa1‘,winreg.REG_SZ,‘a001‘),(‘aa2‘,winreg.REG_DWORD,64),(‘aa3‘,winreg.REG_SZ,‘99999‘)]
key_a=winreg.OpenKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou\testa‘,0,winreg.KEY_SET_VALUE)
#建立1+3个键值
winreg.SetValueEx (key_a, "", 0, winreg.REG_SZ,‘55555‘) #名称为空指定默认值
for i in range(len(list_keys)):
winreg.SetValueEx(key_a, list_keys[i][0], 0, list_keys[i][1], list_keys[i][2])
winreg.CreateKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou\testb‘)
winreg.CreateKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou\testc‘)
winreg.CloseKey(key_a)

#=================================================================读取子值
key_a=winreg.OpenKey(winreg.HKEY_CURRENT_USER,r‘software\dengpeiyou\testa‘,0,winreg.KEY_QUERY_VALUE)

#遍历方法一
#项数
countkey=winreg.QueryInfoKey(key_a)[1] #返回元组(子值数,项数,长整数)
keylist=[]
for i in range(countkey):
name, key_value, value_type = winreg.EnumValue(key_a, i)
keylist.append((name,key_value,value_type))
print(keylist)

#另一种遍历方法
try:
i = 0
while True:
name, value, value_type = winreg.EnumValue(key_a, i)
i += 1
print("项名:%5s 值:%5s 类型:%1d" % (name, value, value_type))
except Exception as e:
pass
#print(‘查找完了‘)

winreg.CloseKey(key_a)
#==================================================================删除值和子键

key_name=r‘software\dengpeiyou\testa‘
key=winreg.OpenKey(winreg.HKEY_CURRENT_USER,key_name,0,winreg.KEY_SET_VALUE)
#这句正确执行的前提是前面打开时加winreg.KEY_SET_VALUE参数,否则报错无法执行
winreg.SetValueEx(key, "aa3", 0, winreg.REG_SZ,‘123456‘) #修改一个存在的项值(如果不存在则新建)
try:
winreg.DeleteValue(key,"aa1") #而删除值项相对简单
except FileNotFoundError:
ctypes.windll.user32.MessageBoxW(None,‘要删除的值不存在‘,‘提示‘,16)

winreg.CloseKey(key)

#技术含量最大的一个函数,可以递归删除所有子键和值(包括自身),请慎用!!!
def find_key(key_str):
try:
key=winreg.OpenKey(winreg.HKEY_CURRENT_USER,key_str)
except FileNotFoundError:
ctypes.windll.user32.MessageBoxW(None,‘打开注册表异常‘,‘提示‘,16)
return

countkey=winreg.QueryInfoKey(key)[0] #子键数
#print("%s有%d个子键."%(key_str,countkey))
if countkey!=0:
for i in range(countkey-1,-1,-1):
key_name=winreg.EnumKey(key,i) #取键名
find_key(key_str+"\\"+key_name)
try:
winreg.DeleteKey(winreg.HKEY_CURRENT_USER, key_str)
except FileNotFoundError:
pass

str1=r‘software\dengpeiyou‘
#find_key(str1)

原文地址:https://www.cnblogs.com/dengpeiyou/p/10262359.html

时间: 2024-08-28 00:28:17

winreg操作windows注册表详解示例的相关文章

【项目Windows部分】Windows 注册表详解

一.注册表的由来 PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置.早期的图形操作系统,如Win3.x中,对软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上难以实现远程访问. 为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做"注册表"的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息.按照这一

利用java.util.prefs包操作windows注册表

利用java.util.prefs包操作windows注册表 Java 操作windows注册表,主要的API 主要接口 接口 说明 NodeChangeListener 用于接收首选项节点更改事件的侦听器. PreferenceChangeListener 用于接收首选项节点更改事件的侦听器. PreferencesFactory 生成Preferences对象的factory对象. 主要的类 类 说明 AbstractPreferences 此类提供了Preferences类的骨干实现,从而

JavaScript修改注册表详解

来自森大科技官方博客http://www.cnsendblog.com/index.php/?p=245GPS平台.网站建设.软件开发.系统运维,找森大网络科技!http://cnsendnet.taobao.com 本实例主要通过WshShell 对象的相关方法实现.WshShell对象是WSH(WSH是Windows Scripting Host的缩写,内嵌于Windows操作系统中的脚本语言工作环境)的内建对象,主要负责程序的本地运行.处理注册表.创建快捷方式.获取系统文件夹信息及处理环境

详解Windows注册表分析取证

大多数都知道windows系统中有个叫注册表的东西,但却很少有人会去深入的了解它的作用以及如何对它进行操作.然而对于计算机取证人员来说注册表无疑是块巨大的宝藏.通过注册表取证人员能分析出系统发生了什么,发生的时间以及如何发生的等.在本文中我将为大家详细介绍Windows注册表的工作原理,以及如何对收集用户留下的各类指纹信息. 什么是注册表? 注册表是用于存储Windows系统用户,硬件和软件的存储配置信息的数据库.虽然注册表是为了配置系统而设计的,但它可以跟踪用户的活动,连接到系统的设备,什么时

windows下权限详解——————【Badboy】

随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式攻击越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁.只 让80端口对外开放的WEB服务器也逃不过被黑的命运.难道我们真的无能为力了吗?其实,只要你弄明白了NTFS系统下的权限设置问题,我们可以对 crackers们说:NO! 要打造一台安全的WEB服务器,那么这台服务器就一定要使用NTFS和Windows NT/2000/2003.众所周知,Windows是一个支持多用户.多任务的操作系统,这是权限设置的基

windows注册表编程

Windows注册表 1 注册表的作用 注册表在windows中非常重要,它是一个庞大的数据库,里面保存了大量的系统信息,例如保存软件硬件的配置信息,计算机系统的设置,性能记录. 如果注册表遭到破坏,就可能对整个系统造成影响,甚至系统瘫痪. 2 注册表的结构 注册表是树状的层次结构:主键-->子键-->子键-->子键-->---->键值.其中每一个键都有键值,键值由3部分构成:值名,值类型,值本身值.有点像int x =0的节奏哈. 每个键都有一个默认的值,所以的默认值就是说

【工作记录】c#操作win7注册表

这里讲一 C# 小列子(高手请绕过此地! ), 我们平时都是在xp开发比较多...不过现在很多开发人员也在win7下开发了. 下面是在 LocalMachine 下的 一下注册表操作 ,就不详说了 private static void DeleteRegistry(string name){string[] aimnames;RegistryKey hkml = Registry.LocalMachine;RegistryKey software = hkml.OpenSubKey("SOFT

个人的后门程序开发(第一部分):文件操作和注册表管理

本来是想寒假时写的,结果一直懒得动手. 虽然手上有ghost源码,但是感觉功能不是我想要的,比如把精力费在学MFC写界面上不如改进下隐藏性. 基本的计划就是做一个后门程序,目的是用来进行权限维持的.目前来看是基于控制台的,而且要带有内核模块,应用层的主要问题就是没写过太大体量的程序导致搞起来很蛋疼,内核方面就是通用性坑爹, 蓝屏起来也要费时间. 第一部分就是封装的两个函数,文件操作和注册表管理.ghost是把这两个功能封装成两个类,我这里就直接用函数来实现了. VS2015编译通过 1 //文件

[转]PostgreSQL教程:系统表详解

这篇文章主要介绍了PostgreSQL教程(十五):系统表详解,本文讲解了pg_class.pg_attribute.pg_attrdef.pg_authid.pg_auth_members.pg_constraint.pg_tablespace.pg_namespace.pg_database等表的作用和字段介绍,需要的朋友可以参考下 一.pg_class: 该系统表记录了数据表.索引(仍然需要参阅pg_index).序列.视图.复合类型和一些特殊关系类型的元数据.注意:不是所有字段对所有对象