Para expandir a resposta do Sr. Dave, %SystemRoot%
é uma variável incorporada (juntamente com um punhado de outras, como %SystemDrive%
). Ou seja, ele não está realmente definido no armazenamento de variáveis de ambiente em HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
no registro.
Por outro lado, %windir%
é uma variável regular e é definida na variável store como %SystemRoot%
. (Não existe uma variável "variável real" para %SystemDrive%
.)
O que usar não importa realmente, mas você pode encontrar problemas com a expansão de variáveis em arquivos em lote; nesse caso, você pode experimentar o outro. (Eu não me lembro de ter problemas com isso especificamente, mas vale a pena ter em mente.)
Além disso, %SystemRoot%
(e %SystemDrive%
) são definidos durante o processo de instalação (quando você escolhe a unidade de destino) e fica disponível desde o início quando o Windows está sendo instalado, enquanto %windir%
é definido como Posteriormente, durante a instalação, se você estiver criando algum tipo de instalação personalizada (por exemplo, OEM, PE, etc.), será necessário usar %SystemRoot%
.