Каков правильный адрес в реестре Windows 10, из которого можно получить и установить переменную PATH?
Когда я запускаю программу Python ниже, ни один из следующих трех вариантов не работает:
from winreg import *
#The following line (uncommented) gives a list of things including Environment
keyVal = r"SYSTEM\CurrentControlSet\Control\Session Manager"
#The following line (uncommendted) gives an empty list of results (nothing)
#keyVal = r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
#The following line (uncommented) gives an error message as follows: "FileNotFoundError: [WinError 2] The system cannot find the file specified"
#keyVal = r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path"
aKey = OpenKey(HKEY_LOCAL_MACHINE, keyVal, 0, KEY_ALL_ACCESS)
try:
i = 0
while True:
asubkey = EnumKey(aKey, i)
print(asubkey)
i += 1
except WindowsError:
pass
Windows CMD запускается от имени администратора, когда вызывается приведенный выше код Python. Я запускаю Windows CMD в качестве администратора в надежде избежать проблем с разрешениями при запуске вышеуказанного сценария для доступа к разделам реестра.
Примечание. Когда я ввожу
regedit
в меню "Пуск" Windows и разворачиваюсь доComputer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
, я вижу правильно заполненную переменнуюPath
. Несмотря на то, что ошибка, показанная выше, выдается, когда я пытаюсь получить доступ к этому программно в качестве администратора.
2-е примечание: когда я пробую код на эту ссылку по предложению @SimonCrane и вызвать функцию с
open_env_registry_key('system')
, результатом будет ошибка приSYS_ENV_SUBPATH = r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path"
или вообще никаких результатов при использованииSYS_ENV_SUBPATH = r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
илиSYS_ENV_SUBPATH = r"SYSTEM\CurrentControlSet\Control\Session Manager"
,
os.environ
? - person mikewatt   schedule 07.01.2020os.environ
только временно изменяетPATH
во время работы вызывающего скрипта. Напротив, запись в реестр необходима для постоянного изменения файлаPATH
. - person CodeMed   schedule 07.01.2020