cmd 스크립트로 레지스트리 추가

Sep 13 2020

cmd를 통해 호환성 모드를 설정하고 싶으므로 현재 디렉토리의 .exe 파일에 레지스트리를 추가하는 배치 스크립트 (코드 참조)를 만들었습니다. 유일한 문제는 "%CD%\Launcher.exe"레지스트리 이름 (경로)을 사용할 때 잘못 설정되어 있다는 것입니다.C:\Users\USER\Desktop\Games\NEWFOL~1\Launcher.exe

그러나 스크립트의 전체 경로를 입력하면 레지스트리 이름이 정확합니다. 그 이유는 무엇이며 어떻게 수정합니까?

이것은 내 스크립트입니다.

@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

답변

1 ItWasn'tMe Sep 15 2020 at 21:00

이스케이프 \ "따옴표 \" 를 추가해야합니다 .

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

또는 "WIN98 256COLOR 640X480"이 매개 변수를 설정하기 위해 이스케이프가 필요한지 확실하지 않기 때문에 경로에서만 ...

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