Python模块——_winreg操作注册表

From: http://blog.sina.com.cn/s/blog_4b5039210100gmsb.html

 

   用python操作修改windows注册表,显然要比用C或者C++简单。

    主要参考资料:官方文档:http://docs.python.org/library/_winreg.html

通过python操作注册表主要有两种方式,一种是通过python的内置模块 _winreg,另一种方式就是Win32 Extension For Pythonwin32api模块。这里主要简单看看用内置模块 _winreg如何操作注册表。

 

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:

    print      

#假如知道键名,也可以直接取值

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以上,_winreg已经变成了winreg

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AS查看Android系统源码

首先要编译安卓源码。我现在使用的是Android5.0源码。平台是tiny4412平台。 一. 编译Android 系统 进入上述解压得到的android-5.0.2,执行以下命令(注意:“.”号后有一个空格): .setenv再执行“lunch”命令,输入“fulltiny4412…

利用Bdrive打造个人私有云存储解决方案

Bdrive 一款私有云储存软件,可以自己方便的在 Mac/Windows 下架设服务器,并可以通过 PC、Mac、iOS、Android 跨平台使用。以下简单介绍一下利用Bdrive来完成个人私有云存储解决方案。 第一步,搭建Bdrive云存储服务器 先下载Bdrive服务器程序&…

MVC路由中routes.IgnoreRoute({resource}.axd/{*pathInfo}) 到底什么意思!

转自:http://blog.csdn.net/lvjin110/article/details/24638913 参考(1) http://www.cnblogs.com/flyfish2012/archive/2013/02/01/2889184.html 我们在开发MVC当中,经常在我们的全局类的路由设置,看到这样的代码&…

修改Cocos2d-X-3.2中的setup.py, 使其能用python3

Cocos2d-x的最新版是v3.2,下载地址为:http://cn.cocos2d-x.org/download/ 在运行setup.py时,他会提示你安装python2.7,因为这个版本是他们"well tested"。 但是我电脑上已经安装了python3.3,又不想因为这事而卸载pytho…

函数 devm_kzalloc()

函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device)被detached或者驱动(driver)卸载(unloaded)时,内存会被自动释放。另外,当内存不在使用时,可以使用…

第四层交换

一,第四层交换简述   第四层交换的一个简单定义是:它是一种功能,它决定 传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第 三层路由),而且依据TCP/UDP(第四层) 应用端口号。第四层 交换功能就象是虚IP,指向物理服务器。它传…

未能加载文件或程序集“Autofac, Version=3.4.0.0,

遇到这个错误的时候&#xff1a;如下图 未能加载文件或程序集“Autofac, Version3.4.0.0, Cultureneutral, PublicKeyToken17863af14b0044da”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 只要在config加上 <runtime><assemblyBinding xmlns"…

浅谈关于SRAM与DRAM的区别

从名字上看&#xff0c;SRAM与DRAM的区别只在于一个是静态一个是动态。由于SRAM不需要刷新电路就能够保存数据&#xff0c;所以具有静止存取数据的作用。而DRAM则需要不停地刷新电路&#xff0c;否则内部的数据将会消失。而且不停刷新电路的功耗是很高的&#xff0c;在我们的PC…

字符串系列之最长回文子串

2019独角兽企业重金招聘Python工程师标准>>> 问题描述&#xff1a; 给定一个字符串SA1A2...An&#xff0c;要求找出其最长回文子串&#xff08;Longest Palindromic Substring&#xff09;。所谓回文子串就是S的某个子串Ai...Aj为回文。例如&#xff0c;对字符串Sab…

在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)

一个定义为volatile的变量是说这变量可能会被意想不到地改变&#xff0c;这样&#xff0c;编译器就不会去假设这个变量的值了。精确地说就是&#xff0c;优化器在用到这个变量时必须每次都小心地重新读取这个变量的值&#xff0c;而不是使用保存在寄存器里的备份。下面是volati…

设计模式:单例和简单工厂

单例设计模式&#xff1a;只实例化一个类的对象&#xff01; 1 public class Person2 {3 //1&#xff1a;首先定义一个静态变量4 //2&#xff1a;将该类的构造函数私有化5 //3&#xff1a;定义一个静态方法&#xff0c;将该类对象赋给这个静态变量6 …

python3学习者的福音

偶然发现python3.3.5下的一个非常有用的目录&#xff1a;D:\Embedded\Python33\Lib\lib2to3 这下面的类有详细的说明,关于python2到3所做的一些更改&#xff0c;特别是模块名等&#xff0c;这个非常有用&#xff0c;尤其是对那些参考python2的源码&#xff0c;现在却要用pytho…

powershell 中的pause

一直想在ps中实现cmd中pause的效果 开始用sleep,不理想 无意中试了一下 cmd /c "pause" 可以了 之前一直被“执行会新开一个线程”给误导了 看来可能是调用其它程序时会… ---------------------------------- 备忘&#xff1a; 传枚举值&#xff0c;只要使用枚举值的…

错误:unrecognized command line option “-std=c++11”

From: http://my.oschina.net/chenyoca/blog/226455 摘要出现这个编译错误的原因在g gcc 版本不够高。目录[-] 添加源&#xff08;Ubuntu&#xff09; 安装4.8版本 查看本地安装版本 切换版本 再次查看g版本 出现这个编译错误的原因在g gcc 版本不够高。 添加源&#xff08;Ubu…

Java反射机制深入研究

ava 反射是Java语言的一个很重要的特征&#xff0c;它使得Java具体了“动态性”。在Java运行时环境中&#xff0c;对于任意一个类&#xff0c;能否知道这个类有哪些属性和方法&#xff1f;对于任意一个对象&#xff0c;能否调用它的任意一个方法&#xff1f;答案是肯定的。这种…

编写安全 PHP 应用程序的七个习惯

在提及安全性问题时&#xff0c;需要注意&#xff0c;除了实际的平台和操作系统安全性问题之外&#xff0c;您还需要确保编写安全的应用程序。在编写 PHP 应用程序时&#xff0c;请应用下面的七个习惯以确保应用程序具有最好的安全性&#xff1a; 验证输入保护文件系统保护数据…

linux内核字符设备文件的自动创建

手动创建&#xff1a;mknod自动创建设备文件的步骤&#xff1a;1.保证根文件系统支持mdev可执行程序mdev将来是创建设备文件的真正的人&#xff01;which is mdev //查看mdev的路劲2.保证文件系统的etc目录下有fstab文件&#xff0c;文件内容必须有&#xff1a;proc /proc …

软件工程概论课堂作业3

题目&#xff1a;返回一个整数数组中最大子数组的和 要求&#xff1a; 输入一个一维整形数组&#xff0c;数组里有正数也有负数。 一维数组首尾相接&#xff0c;象个一条首尾相接带子一样。 数组中连续的一个或多个整数组成一个子数组&#xff0c;每个子数组都有一个和。 求所有…

Android硬件访问服务框架思想初识

Android的硬件访问服务提供了一个APP调用硬件实现的方法模型。我们从上往下来看。应用层面对的都是一个个的服务叫service.比如电源管理服务&#xff0c;震动服务等等。应用层代码首先就需要去查询系统是否存在这么一个服务&#xff0c;或者目前是不是可以被获取的。从这个角度…