python winreg总结
注册表 结构
注册表由键(key,或称“项”)、子键(subkey,子项)和值项(value)构成。一个键就是树状数据结构中的一个节点,而子键就是这个节点的子节点,子键也是键。一个值项则是一个键的一条属性,由名称(name)、数据类型(datatype)以及数据(data)组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
在注册表编辑器(Regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为%systemroot%\system32\NOTEPAD.EXE "%1
_winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ) 打开建,子健
1.读取
读取用的方法是OpenKey方法:打开特定的key
_winreg.OpenKey(key,sub_key,res=0,sam=KEY_READ)
例子:此例子是显示了本机网络配置的一些注册表项
#!/usr/bin/env python
#coding=utf-8
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{0E184877-D910-4877-B 4C2-04F487B6DBB7}")
#获取该键的所有键值,遍历枚举
try:
i=0
while 1:
#EnumValue方法用来枚举键值,EnumKey用来枚举子键
name,value,type = _winreg.EnumValue(key,i)
print repr(name),value,type
i+=1
except WindowsError:
#假如知道键名,也可以直接取值
value,type = _winreg.QueryValueEx(key,"DhcpDefaultGateway")
print "默认网关地址----",value,type
运行的结果如下:
'UseZeroBroadcast' 0 4
'EnableDeadGWDetect' 1 4
'EnableDHCP' 1 4
'IPAddress' [u'0.0.0.0'] 7
'SubnetMask' [u'0.0.0.0'] 7
'DefaultGateway' [] 7
'DefaultGatewayMetric' [] 7
'NameServer' 10.0.0.10 1
'Domain' 1
'RegistrationEnabled' 1 4
'RegisterAdapterName' 0 4
'TCPAllowedPorts' [u'0'] 7
'UDPAllowedPorts' [u'0'] 7
'RawIPAllowedProtocols' [u'0'] 7
'NTEContextList' [u'0x00000004'] 7
'DhcpClassIdBin' None 3
'DhcpServer' 10.104.4.1 1
'Lease' 907200 4
'LeaseObtainedTime' 1264122113 4
'T1' 1264575713 4
'T2' 1264915913 4
'LeaseTerminatesTime' 1265029313 4
'IPAutoconfigurationAddress' 0.0.0.0 1
'IPAutoconfigurationMask' 255.255.0.0 1
'IPAutoconfigurationSeed' 0 4
'AddressType' 0 4
'IsServerNapAware' 0 4
'DhcpIPAddress' 10.104.5.15 1
'DhcpSubnetMask' 255.255.254.0 1
'DhcpRetryTime' 453598 4
'DhcpRetryStatus' 0 4
'DhcpNameServer' 10.0.0.10 1
'DhcpDefaultGateway' [u'10.104.4.1'] 7
'DhcpSubnetMaskOpt' [u'255.255.254.0'] 7
默认网关地址---- [u'10.104.4.1'] 7
2.创建 修改注册表
创建key:_winreg.CreateKey(key,sub_key)
删除key: _winreg.DeleteKey(key,sub_key)
删除键值: _winreg.DeleteValue(key,value)
给新建的key赋值: _winreg.SetValue(key,sub_key,type,value)
例子:
#!/usr/bin/env python
#coding=utf-8
import _winreg
key=_winreg.OpenKey(_winreg.HKEY_CURRENT_USER,r"Software\Microsoft\Windows\CurrentVersion\Explorer")
#删除键
_winreg.DeleteKey(key, "Advanced")
#删除键值
_winreg.DeleteValue(key, "IconUnderline")
#创建新的
newKey = _winreg.CreateKey(key,"MyNewkey")
#给新创建的键添加键值
_winreg.SetValue(newKey,"ValueName",0,"ValueContent")
python3 对bytes类型不需要ord转换直接可以拿来用
from winreg import *
# python3 不同于python2 bytes类型不需要转换处理
#https://stackoverflow.com/questions/50111345/bytes-like-object-is-required-ord-expected-string-of-length-1-but-int-found
def ord_char(val):
add = ''
for ch in val:
add += ("%02x " %ch)
#add += (str(ch)
add = add.strip().replace(" ",":")[0:17]
return (add) def prints_net():
net = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged"
# 打开所有的 machine下的net
key = OpenKey(HKEY_LOCAL_MACHINE,net)
print ('[+] Network you have join') for i in range(100):
try:
# 获取 键
guid = EnumKey(key,i)
# 打开machine》net 下所有的建
nekey = OpenKey(key,str(guid))
(name,addr,typ) = EnumValue(nekey,5)
(name,value,typ) = EnumValue(nekey,4)
#print(addr)
macaddr = ord_char(addr)
#print(value)
print ("[+] %s %s" %(value,macaddr))
CloseKey(nekey)
except Exception as e:
pass
def main():
# ord_char("\x00\x11\x50\x24\x68\x7F\x00\x00")
# ord_char("\x00\x11\x50\x24\x68\x7F\x00\x00")
# ord_char("\x00\x11\x50\x24\x68\x7F\x00\x00")
#ord_char(b'\xf4\xee\x14D6\xf6')
prints_net()
if __name__ == '__main__':
main()
python winreg总结的更多相关文章
- python学习之winreg模块
winreg模块将Windows注册表API暴露给了python. 常见方法和属性 winreg.OpenKey(key,sub_key,reserved = ,access = KEY_READ) ...
- python,winreg,获取当前系统的桌面绝对路径
import winreg import os def main(): new_path = os.path.join(desktop_path(), 'aaa.xlsx') # 结果为:C:\\Us ...
- python至winreg模块
_winreg模块在python3中已经改名了 https://blog.csdn.net/zhangxiaoyang0/article/details/72236305?fps=1&loca ...
- python基础
内容概要: 一.python2 or python3 目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流. python2和3区别: 1.PRINT IS ...
- 【Python五篇慢慢弹(4)】模块异常谈python
模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...
- Python基础1
本节内容2016-05-30 Python介绍 发展史 Python 2 0r 3? 安装 Hello word程序 变量 用户输入 模块初识 .pyc? 数据类型初识 数据运算 if...else语 ...
- Python之路,Day1 - Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python基础语法
学习一门编程语言,通常是学习该语言的以下几个部分的内容: 基础语法:如,变量的声明与调用.基本输出语句.代码块语法.注释等: 数据类型:通常都为 数字.字符串.布尔值.数组.链表.Map.Set等: ...
- python日期格式化与绘图
画一个量随着时间变化的曲线是经常会遇到的需求,比如画软件用户数的变化曲线.画随时间变化的曲线主要用到的函数是matplotlib.pyplot.plot_date(date,num).由于其第一个变量 ...
随机推荐
- libevent(五)event
libevent使用struct event来表示一个事件. #define evutil_socket_t int #define ev_uint8_t unsigned char #define ...
- SQLite使用(一)
简单介绍SQLite常用API: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **p ...
- Python-SHA256加密算法接口测试
前言 小伙伴们在做接口测试的时候,是否遇到一些需要加密的接口,但是不知如何进行测试呢?今天我们来学习一下SHA256加密算法接口如何进行测试的. SHA256加密算法介绍: 比特币挖矿的御用算法 SH ...
- Android如何设置只有边框背景透明的背景呢?
很简单,只需要新建一个 drawable 文件 <?xml version="1.0" encoding="utf-8"?> <shape x ...
- Linux下安装JDK11
Linux下安装JDK11 Linux下安装JDK可分为三步: 下载相应版本的压缩包 解压缩并移置相应目录 配置环境变量 验证结果 一.下载相应版本的压缩包 下载压缩包可以通过官网下载,如图: 下载前 ...
- C++17结构化绑定
动机 std::map<K, V>的insert方法返回std::pair<iterator, bool>,两个元素分别是指向所插入键值对的迭代器与指示是否新插入元素的布尔值, ...
- go 数组 字符串 切片
数组 数组定义方式 var a [3]int // 定义长度为3的int型数组, 元素全部为0 var b = [...]int{1, 2, 3} // 定义长度为3的int型数组, 元素为 1, 2 ...
- 自建nodejs服务器(一:有个服务器)
之前在阿里云备案过,也买过域名和虚拟主机(6元一年),可惜虚拟主机虽然说可选linux或windows系统,但linux系统只支持几个php程序,一番折腾,云栖社区的大伙们都说要弄node得买个ECS ...
- Unity3D中UGUI不使用DOTween制作渐隐渐现效果
在做UI后期设计时,我们可能要对UI做一些特效,这篇文章我们来学习下如何在Unity3d中对实现渐隐渐现的效果, 首先我们看下Unity New UI即UGUI中渐隐渐现的做法. 观察我们会发现Uni ...
- 201771010128 王玉兰《面象对象程序设计(Java)》第六周学习总结
第一部分:基础知识总结: 1.继承 A:用已有类来构建新类的一种机制,当定义了一个新类继承一个类时,这个新类就继承了这个类的方法和域以适应新的情况: B:特点:具有层次结构.子类继承父类的方法和域: ...