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

#coding=utf8

importosimportsysfrom subprocess importcheck_callif sys.hexversion > 0x03000000:importwinregelse:import_winreg as winregclassWin32Environment:"""Utility class to get/set windows environment variable"""

def __init__(self, scope):#assert scope in ('user', 'system')

self.scope =scopeif scope == 'user':

self.root=winreg.HKEY_CURRENT_USER

self.subkey= 'Environment'

else:

self.root=winreg.HKEY_LOCAL_MACHINE

self.subkey= r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'

defgetenv(self, name):

key=winreg.OpenKey(self.root, self.subkey, 0, winreg.KEY_READ)try:

value, _=winreg.QueryValueEx(key, name)exceptWindowsError:

value= ''

returnvaluedefsetenv(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)defget_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)returnvaluedeftest_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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值