В чем разница между% Windir% и% Systemroot% в расположении пути Windows?
Оба они показывают расположение папки "Windows".
3 ответа
Чтобы расширить ответ г-на Дейва, %SystemRoot%
- это встроенная переменная (наряду с небольшим количеством других, таких как %SystemDrive%
). То есть он фактически не определен в хранилище переменных среды по адресу HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
в реестре.
С другой стороны, %windir%
является обычной переменной и определяется в хранилище переменных как %SystemRoot%
. (Нет аналога «реальной переменной» для %SystemDrive%
.)
То, что использовать, на самом деле не имеет значения, но вы можете столкнуться с проблемами с расширением переменных в пакетных файлах, и в этом случае вы можете попробовать другой. (Я не помню, чтобы у меня были проблемы с этим, но об этом стоит помнить.)
Кроме того, %SystemRoot%
(и %SystemDrive%
) задаются во время процесса установки (при выборе целевого диска) и, таким образом, доступны с самой ранней точки при установке Windows, тогда как %windir%
устанавливается позже установки, поэтому, если вы создаете какую-то пользовательскую установку (например, OEM, PE и т. д.), вам нужно использовать %SystemRoot%
.
В Win 7 %SystemRoot%
- системная переменная только для чтения, в то время как %windir%
может быть изменено и по умолчанию установлено как windir=%SystemRoot%
. ОС полагается на %SystemRoot%
. Согласно Википедии, %WinDir%
предшествует Windows NT и, кажется, заменяется %SystemRoot%
.
забавный факт - (в Windows 10 1809)% windir% по-прежнему настолько важен, что вы не можете запустить что-либо с повышенными правами без этого ... что означает, что вы НЕ МОЖЕТЕ НАСТОЯЩИМ ОСТАВИТЬСЯ, потому что попадание в реестр переменных среды, очевидно, требует повышения :( ... к счастью, безопасный режим позволил мне восстановить эту переменную и продолжить работу