zoukankan      html  css  js  c++  java
  • 注册表增删改查

    python2.7版本

    # coding=utf8
    import os
    import sys
    from subprocess import check_call
    
    if sys.hexversion > 0x03000000:
        import winreg
    else:
        import _winreg as winreg
    
    
    class Win32Environment:
        """Utility class to get/set windows environment variable"""
    
        def __init__(self, scope):
            # assert scope in ('user', 'system')
            self.scope = scope
            if scope == 'user':
                self.root = winreg.HKEY_CURRENT_USER
                self.subkey = 'Environment'
            else:
                self.root = winreg.HKEY_LOCAL_MACHINE
                self.subkey = r'SYSTEMCurrentControlSetControlSession ManagerEnvironment'
    
        def getenv(self, name):
            key = winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_READ)
            try:
                value, _ = winreg.QueryValueEx(key, name)
            except WindowsError:
                value = ''
            return value
    
        def setValue(self, name, value,type=winreg.REG_EXPAND_SZ):
            # Note: for 'system' scope, you must run this as Administrator
            key = winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_ALL_ACCESS)
            winreg.SetValueEx(key, name, 0, type, value)
            winreg.CloseKey(key)
            # TODO: handle CalledProcessError (for assert)
            check_call(
                '''"%s" -c "import win32api, win32con;assert win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE,0, 'Environment')"''' % sys.executable)
    
        def get_userenv(self, name):
            # Note: for 'system' scope, you must run this as Administrator
            key = winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_ALL_ACCESS)
            value, _ = winreg.QueryValueEx(key, name)
            return value
    
        def deleteKey(self,name):
            key = winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_ALL_ACCESS)
            value, _ = winreg.DeleteKey(key, name)
            return value
    
    
    
    def get_value(name):
        e2 = Win32Environment(scope="user")
        res =e2.get_userenv(name)
        return '注册表查询完成,{}的值为{}'.format(name,res)
    
    
    def set_value(name,value,input_type=None):
        if input_type=='string':
            input_type=winreg.REG_SZ
        elif input_type=='binary':
            input_type = winreg.REG_BINARY
        elif input_type=='dword':
            input_type=winreg.REG_DWORD
        else:
            input_type=winreg.REG_EXPAND_SZ
    
        e2 = Win32Environment(scope="user")
        e2.setValue(name,value,type=input_type)
        return '注册表设置完成'
    
    
    def del_key(name):
        try:
            e2 = Win32Environment(scope="user")
            e2.deleteKey(name)
            return '注册表删除完成'
        except Exception as e:
            print e
            print '删除失败,请查看父节点是否设置成完全控制,详情查看WOW6432Node配置'
            sys.exit(1)
    
    
    if __name__ == '__main__':
        if func=='get':
            print get_value(name)
        elif func=='set':
            print set_value(name,value,input_type=input_type)
        elif func=='del':
            print del_key(name)
        else:
            print '请在func参数中填入get,set或del'
            sys.exit(1)
    

      

  • 相关阅读:
    【转】SQL SERVER函数无法执行对数据库的修改语句
    【转】用SQL实现树的查询
    HTML: < 和 > 是何方神圣
    ASP.NET的一些小问题
    C#的MD5哈希值计算
    高度自适应的CSS
    [转]WCF类型共享技巧
    使用.net的跟踪诊断来记录wcf消息
    【转】js frame 框架编程
    js点击button按钮跳转到页面代码
  • 原文地址:https://www.cnblogs.com/slqt/p/10399959.html
Copyright © 2011-2022 走看看