![使用cmd脚本添加注册表](https://linux22.com/image/1632697/%E4%BD%BF%E7%94%A8cmd%E8%84%9A%E6%9C%AC%E6%B7%BB%E5%8A%A0%E6%B3%A8%E5%86%8C%E8%A1%A8.png)
我想通过 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
你需要添加逃生\“引号\”:
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