2017-02-01 1 views
0

에서 Windows 사용자 환경 변수를 삭제하려면 어떻게 레지스트리에있는 사용자 환경 변수를 만들 수 있습니다이 간단한 설정으로 레지스트리

import win32con 
import win32gui 
import _winreg as winreg 

def set_environment_variable(variable, value, user_env=True): 
    if user_env: reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Environment', 0, winreg.KEY_SET_VALUE) 
    else: reg_key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 0, winreg.KEY_SET_VALUE) 

    if '%' in value: var_type = winreg.REG_EXPAND_SZ 
    else: var_type = winreg.REG_SZ 

    with reg_key: 
     winreg.SetValueEx(reg_key, variable, 0, var_type, value)  
    win32gui.SendMessageTimeout(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment', win32con.SMTO_ABORTIFHUNG, 1000) 

생성을 MY_VARIABLE : 여기

set_environment_variable('MY_VARIABLE', 'MY_VALUE') 

이 스크린 샷입니다 :

enter image description here

질문 : 방금 만든 MY_VARIABLE을 어떻게 삭제합니까?

+0

필자는 .bat 파일을 만들고 파이썬 코드에서 실행할 것이라고 확신합니다. – MaLiN2223

+0

고마워요,하지만 파이썬에서 다루기를 바랍니다. – alphanumeric

+0

그 경우 : [documentation] (https://docs.python.org/2/library/_winreg.html)에'DeleteKey' 메소드를 사용하여 할 수 있다고 나와 있습니다. – MaLiN2223

답변

1

쉽게 설정하거나 사용하여 Windows 레지스트리에서 환경 변수를 제거 할 수 있습니다

set_environment_variable('MY_VARIABLE', None) 
:

set_environment_variable('MY_VARIABLE', 'MY_VALUE) 

환경 변수를 제거하려면 : 환경 변수를 설정하려면

def set_environment_variable(variable, value, user_env=True): 
    """ 
    Set/Remove Environment variable from windows registry. 

    :param variable: Environment Variable Name 
    :param value: Environment Variable Value (None to delete) 
    :param user_env: if true set in user env instead of in system env 
    :return: None 
    """ 
    if user_env: 
     # This is for the user's environment variables 
     reg_key = winreg.OpenKey(
      winreg.HKEY_CURRENT_USER, 
      'Environment', 0, winreg.KEY_SET_VALUE) 
    else: 
     # This is for the system environment variables 
     reg_key = winreg.OpenKey(
      winreg.HKEY_LOCAL_MACHINE, 
      r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 
      0, winreg.KEY_SET_VALUE) 

    with reg_key: 
     if value is None: 
      winreg.DeleteValue(reg_key, variable) 
     else: 
      if '%' in value: 
       var_type = winreg.REG_EXPAND_SZ 
      else: 
       var_type = winreg.REG_SZ 
      winreg.SetValueEx(reg_key, variable, 0, var_type, value) 

    # notify about environment change 
    win32gui.SendMessageTimeout(
     win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 
     'Environment', win32con.SMTO_ABORTIFHUNG, 1000) 

win32 라이브러리를 가져올 수 있습니다.

import win32con 
import win32gui 
try: 
    import _winreg as winreg 
except ImportError: 
    # this has been renamed in python 3 
    import winreg 
관련 문제