• python通过操作windows系统注册表方式修改环境变量


    #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 setenv(self, name, value):
            # 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, winreg.REG_EXPAND_SZ, value)
            winreg.CloseKey(key)
            # For some strange reason, calling SendMessage from the current process
            # doesn't propagate environment changes at all.
            # 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 test_winreg():
        # e1 = Win32Environment(scope="system")
        # print e1.getenv('PATH')
        e2 = Win32Environment(scope="user")
        # e2.setenv('JAVA_HOME', os.path.expanduser('C:\jdk1.8.0_91'))
        # e2.setenv('CLASS_PATH', os.path.expanduser('%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar'))
        # e2.setenv('PATH', os.path.expanduser('%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin'))
        e2.get_userenv("JAVA_HOME")
    
        cmd="java version"
    
    
        e1 = Win32Environment(scope="user")
        #print e1.get_userenv('JAVA_HOME')
    
    
    if __name__=='__main__':
        test_winreg()
    
        # if filename and os.path.isfile(filename):
        #     execfile(filename)
  • 相关阅读:
    资金流学习-成本分析
    解决root用户不能打开Chromium网页浏览器
    Kali Linux 2020.1乱码问题
    Kali Linux安装谷歌浏览器
    解决Kali Linux 2020.1乱码问题
    Kali Linux 2020.1a版本msfconsole启动失败问题
    Kali Linux发布2020.1a版本
    Kali Linux 2020.1快速修改root用户密码
    Kali Linux 2020.1安装桌面
    Kali Linux 2020.1修改系统语言
  • 原文地址:https://www.cnblogs.com/slqt/p/5718154.html
Copyright © 2020-2023  润新知