Ajouter un registre avec un script cmd

Sep 13 2020

Je veux définir le mode de compatibilité via cmd et j'ai donc créé un script batch (voir code) qui ajoute un registre au fichier .exe dans le répertoire actuel. Le seul problème est que lorsque j'utilise "%CD%\Launcher.exe"le nom de registre (chemin) est mal défini ->C:\Users\USER\Desktop\Games\NEWFOL~1\Launcher.exe

Mais lorsque j'entre le chemin complet du script, le nom du registre est correct. Pourquoi en est-il ainsi et comment y remédier?

Voici mon script:

@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params= %*
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------      
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%CD%\Launcher.exe" /t REG_SZ /d "WIN98 256COLOR 640X480" /f
exit

Réponses

1 ItWasn'tMe Sep 15 2020 at 21:00

Vous devez ajouter un échappement \ "quotes \" :

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v \""%CD%\Launcher.exe"\" /t REG_SZ /d \"WIN98 256COLOR 640X480\" /f

Ou, uniquement dans votre chemin, car je ne sais pas si vous "WIN98 256COLOR 640X480"devrez vous échapper pour définir ces paramètres ...

<con: REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v \""%CD%\Launcher.exe"\" /t REG_SZ /d "WIN98 256COLOR 640X480" /f