Comment récupérer une valeur de registre et la stocker dans une variable en batch

J’ai besoin de récupérer une valeur dans une clé de registre et de la stocker dans une variable en utilisant un fichier batch.

J’ai écrit une ligne de commande basique pour illustrer ma logique (en utilisant echo au lieu de définir une variable) :

for /f "tokens=3 delims=    " %%a in ('reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^|findstr /ri "REG_SZ"') do echo=%%a

Je m’attends à ce que le nom d’utilisateur soit affiché à l’écran, mais rien ne se passe.

Je suis sûr que la valeur de registre “LastUsedUsername” n’est pas vide, elle contient bien des données.
De plus, le délimiteur est une tabulation, pas des espaces.

MODIFICATION

Si je tape simplement

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername"

… cela retourne :

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
    LastUsedUsername    REG_SZ    Administrador

Ce code

reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "LastUsedUsername" ^| findstr /ri "REG_SZ"

… retourne :

    LastUsedUsername    REG_SZ    Administrador

Ensuite, quand j’utilise la commande for, je n’obtiens aucune sortie de echo.

La réponse approuvée n’est pas correcte dans certaines situations – si la valeur lue depuis le registre contient des espaces (comme Program Files (x86)), alors elle ne retourne que la première partie de la valeur (‘Program’).
Ce que j’ai trouvé qui fonctionne est :

FOR /F "tokens=2* skip=2" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /v "CommonFilesDir"') do echo %%b

Le résultat est C:\Program Files\Common Files