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

Windows上的自动化测试经常会接触到对于注册表的读写操作问题,比如,获取一个程序的安装目录,一般情况下,我们可以去注册表的App Paths下去查找,这时就涉及到了注册表的读取操作,我们使用Python的_winreg模块来实现,代码如下:

def reg_query(path, key):try:path = path.replace("/", "\\")rootName = path[:path.find("\\")]subPath = path[path.find("\\") + 1:]rootKey = _query_root(rootName)if rootKey is None:return ""print pathroot = _winreg.OpenKey(rootKey, subPath)value, type = _winreg.QueryValueEx(root, key)return valueexcept:# log.exception(traceback.format_exc())return ""其中_query_root方法,是根据rootName去获取Root的枚举值,代码如下:

def _query_root(rootName):rootKey = Noneif rootName == "HKEY_LOCAL_MACHINE":rootKey = _winreg.HKEY_LOCAL_MACHINEelif rootName == "HKEY_CLASSES_ROOT":rootKey = _winreg.HKEY_CLASSES_ROOTelif rootName == "HKEY_CURRENT_USER":rootKey = _winreg.HKEY_CURRENT_USERelif rootName == "HKEY_USERS":rootKey = _winreg.HKEY_USERSelif rootName == "HKEY_CURRENT_CONFIG":rootKey = _winreg.HKEY_CURRENT_CONFIGreturn rootKey那我们如何使用呢?使用方式如下,获取Python的路径:

pythonPath = reg_query(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Python.exe", "")

读取操作完成了,有些情况下,为了在测试中,修改一些环境或程序配置,我们需要对注册表进行写入操作,看下代码吧

def req_add(path, key, value, type=_winreg.REG_SZ):try:path = path.replace("/", "\\")rootName = path[:path.find("\\")]subPath = path[path.find("\\") + 1:]rootKey = _query_root(rootName)if rootKey is None:return ""print pathroot = _winreg.OpenKey(rootKey, subPath, 0, _winreg.KEY_ALL_ACCESS)# subKey = _winreg.CreateKeyEx(root, key)_winreg.SetValueEx(root, key, 0, type, value)return Trueexcept:log.exception(traceback.format_exc())return False用法也比较简单,比如,我们要在Python的路径下,增加一个选项值,,如下:

reg_add(r"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Python.exe", "test", "test")

转载请注明:

探索测试奥义,交流测试技术,欢迎关注“搜狗测试”

人生就像爬坡,要一步一步来。

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

相关文章:

你感兴趣的文章:

标签云: