¿Cuál es la diferencia entre% WinDir% y% SystemRoot%?

33

¿Cuál es la diferencia entre% Windir% y% Systemroot% en la ubicación de la ruta de Windows?
Ambos muestran la ubicación de la carpeta "Windows".

Amirreza Nasiri
fuente

Respuestas:

34

Para ampliar la respuesta del Sr. Dave, %SystemRoot%es una variable incorporada (junto con un pequeño puñado de otros como %SystemDrive%). Es decir, en realidad no está definido en el almacén de variables de entorno HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmenten el registro.

Por otro lado, %windir%es una variable regular y se define en la tienda de variables como %SystemRoot%. (No existe una contraparte de "variable real" %SystemDrive%).

Lo que usar realmente no importa, pero puede tener problemas con la expansión variable en archivos por lotes, en cuyo caso podría probar el otro. (No recuerdo haber tenido problemas con esto específicamente, pero vale la pena tenerlo en cuenta).

Además, %SystemRoot%(y %SystemDrive%) se configuran durante el proceso de instalación (cuando elige la unidad de destino) y, por lo tanto, está disponible desde el primer momento cuando se instala Windows, mientras que %windir%se configura en un punto posterior durante la instalación, por lo que si está creando algunos tipo de instalación personalizada (p. ej., OEM, PE, etc.) que deseará utilizar %SystemRoot%.

Synetech
fuente
Entonces, ¿% windir% construido DESPUÉS de la instalación?
Amirreza Nasiri
2
No, durante la instalación, pero después %SystemRoot%. Windows tiene suficiente información para configurar SystemDrivey SystemRoottan pronto como elija la unidad donde instalarlo (además, utiliza un valor predeterminado si no modifica el destino). Establece varias variables de entorno predeterminadas (incluidas windir) más adelante en la instalación cuando inicializa el registro. Esto solo importa si está modificando el proceso de instalación.
Synetech
en cuyo caso podrías probar el otro . Supongo que el otro es %windir%. ¿Es eso correcto?
René Nyffenegger
28

En Win 7 %SystemRoot%es una variable de sistema de solo lectura, mientras que %windir%se puede cambiar y se establece de forma predeterminada como windir=%SystemRoot%. El sistema operativo depende %SystemRoot%. Según Wikipedia , es %WinDir%anterior a Windows NT y parece ser reemplazado por %SystemRoot%.

Dave
fuente
1

Dato curioso: (en Windows 10 1809)% windir% sigue siendo tan esencial que no se puede ejecutar nada elevado sin él ... lo que significa que NO PUEDES RETIRARLO REALMENTE porque golpear el registro de variables de entorno aparentemente requiere elevación :( ... afortunadamente, el modo seguro me permitió restaurar esa variable y seguir trabajando

Beej
fuente