saltstack reg模块修复,saltstackreg模块,原来的modules/r
saltstack reg模块修复,saltstackreg模块,原来的modules/r
原来的modules/reg.py 对注册表增删查改都存在问题,自己修改了一下!
'''Manage the registry on Windows:depends: - winreg Python module'''# TODO: Figure out the exceptions _winreg can raise and properly catch# them instead of a bare except that catches any exception at all# Import third party libstry: import _winreg HAS_WINDOWS_MODULES = Trueexcept ImportError: try: import winreg as _winreg HAS_WINDOWS_MODULES = True except ImportError: HAS_WINDOWS_MODULES = False# Import python libsimport logging# Import salt libsimport salt.utilsfrom salt.exceptions import CommandExecutionErrorlog = logging.getLogger(__name__)class Registry(object): ''' Delay '_winreg' usage until this module is used ''' def __init__(self): self.hkeys = { "HKEY_USERS": _winreg.HKEY_USERS, "HKEY_CURRENT_USER": _winreg.HKEY_CURRENT_USER, "HKEY_LOCAL_MACHINE": _winreg.HKEY_LOCAL_MACHINE, } def __getattr__(self, k): try: return self.hkeys[k] except KeyError: msg = 'No hkey named \\'{0}. Try one of {1}\\'' hkeys = ', '.join(self.hkeys) raise CommandExecutionError(msg.format(k, hkeys))def __virtual__(): ''' Only works on Windows systems ''' if salt.utils.is_windows(): if HAS_WINDOWS_MODULES: return 'reg' # TODO: This needs to be reworked after the module dependency # docstring was changed to :depends log.warn(salt.utils.required_modules_error(__file__, __doc__)) return Falsedef read_key(hkey,path, key): ''' Read registry key value CLI Example:: salt '*' reg.read_key HKEY_LOCAL_MACHINE 'SOFTWARE\\\\Salt' 'version' ''' registry = Registry() hkey2 = getattr(registry, hkey) # handle = _winreg.OpenKey(hkey2, path) # value, type = _winreg.QueryValueEx(handle, key) # return value try: handle = _winreg.OpenKey(hkey2, path) return _winreg.QueryValueEx(handle, key)[0] except Exception: return Falsedef set_key(hkey, path, key, value): ''' Set a registry key CLI Example:: salt '*' reg.set_key HKEY_CURRENT_USER 'SOFTWARE\\\\Salt' 'version' '0.97' ''' registry = Registry() hkey2 = getattr(registry, hkey) # fullpath = '\\\\\\\\'.join([path, key]) try: # handle = _winreg.OpenKey(hkey2, fullpath, 0, _winreg.KEY_ALL_ACCESS) handle = _winreg.OpenKey(hkey2, path, 0, _winreg.KEY_ALL_ACCESS) _winreg.SetValueEx(handle, key, 0, _winreg.REG_DWORD, value) _winreg.CloseKey(handle) return True except Exception: handle = _winreg.CreateKey(hkey2, path) _winreg.SetValueEx(handle, key, 0, _winreg.REG_DWORD, value) _winreg.CloseKey(handle) return Truedef create_key(hkey, path, key, value=None): ''' Create a registry key CLI Example:: salt '*' reg.create_key HKEY_CURRENT_USER 'SOFTWARE\\\\Salt' 'version' '0.97' ''' registry = Registry() hkey2 = getattr(registry, hkey) # fullpath = '\\\\\\\\'.join([path, key]) try: handle = _winreg.OpenKey(hkey2, path, 0, _winreg.KEY_ALL_ACCESS) _winreg.CloseKey(handle) return True except Exception: handle = _winreg.CreateKey(hkey2, path) if value: _winreg.SetValueEx(handle, key, 0, _winreg.REG_DWORD, value) _winreg.CloseKey(handle) return Truedef delete_key(hkey, path, key): ''' Delete a registry key Note: This cannot delete a key with subkeys CLI Example:: salt '*' reg.delete_key HKEY_CURRENT_USER 'SOFTWARE\\\\Salt' 'version' ''' registry = Registry() hkey2 = getattr(registry, hkey) try: handle = _winreg.OpenKey(hkey2, path, 0, _winreg.KEY_ALL_ACCESS) _winreg.DeleteKeyEx(handle, key) _winreg.CloseKey(handle) return True except Exception: _winreg.CloseKey(handle) return True#该片段来自于http://byrx.net
相关内容
- 局域网聊天---当前有图形和基本的架构 分享有时间的可
- 下载进度条显示,进度条显示,#!/usr/bin/p
- 掷骰子游戏,,游戏规则:玩家投掷两个骰
- 求多个数的最小公倍数,个数最小公倍数,import math"
- code golf--打印数字菱形,codegolf--,s=str(111111
- Python 秒杀“Ruby 太慢了”问题,pythonruby,感觉程序员是
- 一个论坛自动灌水机的例子,论坛灌水机例子,python初学
- python通过wxPython打开一个音频文件并播放的代码,pyth
- Fair and Square,fairandsquare,时间:1e14(18s左
- python 多线程实例,python多线程,# _*_ coding
评论关闭