提供regfullpath的方法,可以自行封装个regpath的函数
import logging
import pywintypes
import win32api
import win32con

def getValue(strKeyPath, intAccessMask, strValueName, default=None): if strKeyPath[0] == '\\':
strKeyPath = strKeyPath[1:]
strRoot, strKey = strKeyPath.split('\\', 1)
if strRoot not in g_dicKeyRoot:
raise KeyError(strRoot)
intRoot = g_dicKeyRoot[strRoot]
if intAccessMask == None:
intAccessMask = win32con.KEY_QUERY_VALUE | win32con.KEY_ENUMERATE_SUB_KEYS | win32con.KEY_NOTIFY
h = win32api.RegOpenKeyEx(intRoot, strKey, 0, intAccessMask)
try:
value, vType = win32api.RegQueryValueEx(h, strValueName)
except pywintypes.error as e:
if str(e.args[0]) == '2': # value name doesn't exist
if strValueName == '':
return None, win32con.REG_NONE
if default != None:
return default, None
raise
return value, vType def actGetRegKey(strRegKeyPath, strKeyName):
'''
@param strRegKeyPath: Specify registry key path. Ex. r"HKEY_LOCAL_MACHINE\SOFTWARE\test123"
@param strKeyName: Specify registry key name. Ex. "VirusCount"
@return: strKeyValue[0] -> key value
@example: actGetRegKey(r"HKEY_LOCAL_MACHINE\SOFTWARE\test123","VirusCount")
'''
try:
intAccessMask = win32con.KEY_QUERY_VALUE | win32con.KEY_ENUMERATE_SUB_KEYS | win32con.KEY_NOTIFY
strKeyValue = getValue(strRegKeyPath, intAccessMask, strKeyName)
logging.debug(
'GetRegKey success, path %s, keyName %s , keyValue %s' % (strRegKeyPath, strKeyName, strKeyValue))
return strKeyValue[0]
except pywintypes.error as e:
if 'Access is denied' in str(e):
logging.info(
'Reading regkey %s %s access is denied, change way to KEY_READ' % (strRegKeyPath, strKeyName))
strKeyValue = getValue(strRegKeyPath, win32con.KEY_READ, strKeyName)
logging.debug(
'GetRegKey success, path %s, keyName %s , keyValue %s' % (strRegKeyPath, strKeyName, strKeyValue))
return strKeyValue[0] def GetRegistryValuebyFullPath(fullregpath, regkeyname):
try:
logging.info("full registry path: %s" % fullregpath)
registryValue = actGetRegKey(fullregpath, regkeyname)
logging.info("registryValue: %s" % registryValue)
return registryValue
except pywintypes.error as e:
logging.error('GetRegistryValue Error! %s' % str(e))

使用python获取window注册表值的方法的更多相关文章

  1. python获取文件扩展名的方法(转)

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧.具体实现方法如下: 1 2 3 4 import os.path def file_extension(path ...

  2. python获取文件扩展名的方法

    主要介绍了python获取文件扩展名的方法,涉及Python针对文件路径的相关操作技巧 import os.path def file_extension(path): ] print file_ex ...

  3. python获取本地ip地址的方法

    #_*_coding:utf8_*_ #以下两种方法可以在ubuntu下或者windows下获得本地的IP地址 import socket # 方法一 localIP = socket.gethost ...

  4. Win10打开照片提示“无效的注册表值”解决方法

    1.点开开始菜单,右键单击,选择“以管理员运行”[键盘win键+R]输入PowerShell. 2.输入Get-AppxPackage *photo* | Remove-AppxPackage后回车. ...

  5. Python入门之获取当前所在目录的方法详解

    #本文给大家讲解的是使用python获取当前所在目录的方法以及相关示例,非常的清晰简单,有需要的小伙伴可以参考下 sys.path 模块搜索路径的字符串列表.由环境变量PYTHONPATH初始化得到. ...

  6. python 获取mac地址zz

    通过python获取当前mac地址的方法如下:(1)通用方法,借助uuid模块def get_mac_address(): import uuid      node = uuid.getnode() ...

  7. SQL读取注册表值

    最近写一个自动检查SQL Serve安全配置的检查脚本,需要查询注册表,下面是使用SQL查询注册表值的方法. ) ) ) ) --For Named instance --SET @Instance ...

  8. python获取字母在字母表对应位置的几种方法及性能对比较

    python获取字母在字母表对应位置的几种方法及性能对比较 某些情况下要求我们查出字母在字母表中的顺序,A = 1,B = 2 , C = 3, 以此类推,比如这道题目 https://project ...

  9. python动态获取对象的属性和方法 (转载)

    首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...

随机推荐

  1. java-重载、包修饰词以及堆栈管理

    1.方法的重写(Override):重新写.覆盖 1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 2)重写方法被调用时,看对象的类型2.重写与重载的区别: 1)重写(Override): ...

  2. DL基础:cs231n assignment 1

    cs231n assignment 1 20210804 - 20210808. 目录 cs231n assignment 1 总结 KNN 思想 cross-validation 编程细节 SVM ...

  3. P4675 [BalticOI 2016 day1]Park (并查集)

    题面 在 Byteland 的首都,有一个以围墙包裹的矩形公园,其中以圆形表示游客和树. 公园里有四个入口,分别在四个角落( 1 , 2 , 3 , 4 1, 2, 3, 4 1,2,3,4 分别对应 ...

  4. 【lwip】005-lwip内核框架剖析

    目录 前言 5.1 lwip初始化 5.2 内核超时 5.2.1 内核超时机制 5.2.2 周期定时机制 5.2.3 内核超时链表数据结构 5.2.4 内核超时初始化 5.2.6 超时的溢出处理 5. ...

  5. Get请求使用请求体传递参数会报400异常的问题

    问题描述: 前端使用Get请求并且使用请求体传递参数,后端使用@RequestBody注解封装参数,这时会出现400的异常信息. 解决方法: 1.Get请求不要使用请求体,使用请求体的话用POST请求 ...

  6. C# 开发过程中常见错误记录及解决说明

    1.异常了类型: 1.1.1.1 异常错误信息:An error occurred while updating the entries. See the inner exception for de ...

  7. mysql 重复执行创建表、新增字段脚本

    #bigint 可重复执行创建表脚本 1 Create Table If Not Exists `库名`.`表名`( 2 字段列表 3 ) ENGINE=InnoDB DEFAULT CHARSET= ...

  8. 关于 Math.random()生成指定范围内的随机数的公式推导

    关于 Math.random()生成指定范围内的随机数的公式推导 在 java 中,用于生成随机数的 Math 方法 random()只能生成 0-1 之间的随机数,而对于生成指定区间,例如 a-b ...

  9. x64dbg 插件开发环境配置

    x64dbg 是一款开源的应用层反汇编调试器,旨在对没有源代码的可执行文件进行恶意软件分析和逆向工程,同时 x64dbg 还允许用户开发插件来扩展功能,插件开发环境的配置非常简单,如下将简单介绍x64 ...

  10. 如何修改SAO用户密码

    KingbaseES SAO 用户是专门用于审计管理的用户,用户配置审计策略需要使用该用户.在initdb 完成后,SAO  用户的默认密码保存在参数 sysaudit.audit_table_pas ...