28

В чем разница между% Windir% и% Systemroot% в расположении пути Windows?
Оба они показывают расположение папки "Windows".

3 ответа3

31

Чтобы расширить ответ г-на Дейва, %SystemRoot% - это встроенная переменная (наряду с небольшим количеством других, таких как %SystemDrive%). То есть он фактически не определен в хранилище переменных среды по адресу HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment в реестре.

С другой стороны, %windir% является обычной переменной и определяется в хранилище переменных как %SystemRoot% . (Нет аналога «реальной переменной» для %SystemDrive% .)

То, что использовать, на самом деле не имеет значения, но вы можете столкнуться с проблемами с расширением переменных в пакетных файлах, и в этом случае вы можете попробовать другой. (Я не помню, чтобы у меня были проблемы с этим, но об этом стоит помнить.)

Кроме того, %SystemRoot%%SystemDrive%) задаются во время процесса установки (при выборе целевого диска) и, таким образом, доступны с самой ранней точки при установке Windows, тогда как %windir% устанавливается позже установки, поэтому, если вы создаете какую-то пользовательскую установку (например, OEM, PE и т. д.), вам нужно использовать %SystemRoot% .

24

В Win 7 %SystemRoot% - системная переменная только для чтения, в то время как %windir% может быть изменено и по умолчанию установлено как windir=%SystemRoot% . ОС полагается на %SystemRoot% . Согласно Википедии, %WinDir% предшествует Windows NT и, кажется, заменяется %SystemRoot% .

0

забавный факт - (в Windows 10 1809)% windir% по-прежнему настолько важен, что вы не можете запустить что-либо с повышенными правами без этого ... что означает, что вы НЕ МОЖЕТЕ НАСТОЯЩИМ ОСТАВИТЬСЯ, потому что попадание в реестр переменных среды, очевидно, требует повышения :( ... к счастью, безопасный режим позволил мне восстановить эту переменную и продолжить работу

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .