2017-02-01 10 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-файл и запустил его из кода python, чтобы быть уверенным. – MaLiN2223

+0

Спасибо, но я бы хотел, чтобы он обрабатывался в Python. – alphanumeric

+0

В этом случае: [documentation] (https://docs.python.org/2/library/_winreg.html) говорит, что вы можете сделать это, используя метод 'DeleteKey'. – MaLiN2223

ответ

1

Вы можете легко установить или удалить переменную окружения из реестра Windows, с:

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) 

Чтобы установить переменную окружения:

set_environment_variable('MY_VARIABLE', 'MY_VALUE) 

Чтобы удалить переменную окружения:

set_environment_variable('MY_VARIABLE', None) 

Вы можете импортировать файлы win32 с:

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

 Смежные вопросы

  • Нет связанных вопросов^_^