Qual é a diferença entre% WinDir% e% SystemRoot%?

33

Qual é a diferença entre% Windir% e% Systemroot% no local do caminho do Windows?
Ambos mostram o local da pasta "Windows".

Amirreza Nasiri
fonte

Respostas:

34

Para expandir a resposta do Sr. Dave, %SystemRoot%é um built-in variável (junto com um pequeno punhado de outros gostam %SystemDrive%). Ou seja, ele não está realmente definido no armazenamento de variável de ambiente HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentno registro.

Por outro lado, %windir%é uma variável regular e é definida no armazenamento de variáveis ​​como %SystemRoot%. (Não há contrapartida da “variável real” para %SystemDrive%.)

Qual usar realmente não importa, mas você pode ter problemas com a expansão variável em arquivos em lote; nesse caso, você pode tentar o outro. (Não me lembro de ter problemas com isso especificamente, mas vale a pena lembrar.)

Além disso, %SystemRoot%(e %SystemDrive%) são definidos durante o processo de instalação (quando você escolhe a unidade de destino) e, portanto, estão disponíveis desde o primeiro momento em que o Windows está sendo instalado, enquanto %windir%são definidos em um momento posterior durante a instalação, portanto, se você estiver criando alguns tipo de instalação personalizada (por exemplo, OEM, PE, etc.), você desejará usar %SystemRoot%.

Synetech
fonte
Então,% windir% construiu APÓS a instalação?
Amirreza Nasiri
2
Não, durante a instalação, mas depois %SystemRoot%. O Windows possui informações suficientes para definir SystemDrivee SystemRootassim que você escolher a unidade onde instalá-la (além disso, usará o padrão se você não modificar o destino). Ele define várias variáveis ​​de ambiente padrão (incluindo windir) posteriormente na instalação quando inicializa o registro. Isso só importa se você estiver modificando o processo de instalação.
Synetech
Nesse caso, você pode tentar o outro . Presumo que o outro seja %windir%. Isso está correto?
René Nyffenegger 13/09
28

No Win 7, %SystemRoot%é uma variável do sistema somente leitura enquanto %windir%pode ser alterada e é definida por padrão como windir=%SystemRoot%. O sistema operacional depende %SystemRoot%. Segundo a Wikipedia , %WinDir%antecede o Windows NT e parece ser substituído por %SystemRoot%.

Dave
fonte
1

fato divertido - (no Windows 10 1809)% windir% ainda é tão essencial que você não pode executar nada elevado sem ele ... o que significa que NÃO É POSSÍVEL RETIRAR DE VOLTA, pois o registro da variável de ambiente aparentemente requer elevação :( ... felizmente, o modo de segurança me permitiu restaurar essa variável e continuar andando

Beej
fonte