批处理文件以更改DPI缩放系数



我正在尝试编写一个批处理文件,该文件将在第一次登录时更改用户DPI设置。我已经将文件放在启动文件夹中,它将提示用户在对注册表进行任何更改之前注销。如果已经进行了更改,我不希望提示用户。这就是我到目前为止的:

        @echo off
REG QUERY "HKCUControl PanelDesktopWindowMetrics" /v AppliedDPI  
IF %var% == 0x78 GOTO Leave
CD
CLS
ECHO.
:LOOP
ECHO Would you like to logoff to change Scaling of windows?
ECHO.
ECHO   Y = Logoff
ECHO   N = CANCEL and return to Windows
ECHO.
SET Choice=
SET /P Choice=TYPE YOUR CHOICE AND PRESS ENTER: 
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
ECHO.
IF '%Choice%'=='y' GOTO LogoffNow
IF '%Choice%'=='n' GOTO Leave
ECHO "%Choice%" is not valid. Please try again.
ECHO.
GOTO Loop
:LogoffNow
ECHO.
REG ADD "HKCUControl PanelDesktop" /v DpiScalingVer /t REG_DWORD /d 0x00001018 /f
REG ADD "HKLMSoftwareMicrosoftWindows NTCurrentVersionFontDPI" /v LogPixels /t REG_DWORD /d 0x00000144 /f
REG ADD "HKCUControl PanelDesktopWindowMetrics" /v AppliedDPI /t REG_DWORD /d 0x00000144 /f
REG ADD "HKCUControl PanelDesktop" /v Win8DpiScaling /t REG_DWORD /d 0x00000001 /f
REG ADD "HKCUControl PanelDesktop" /v LogPixels /t REG_DWORD /d 0x00000078 /f
shutdown /l
:Leave

更改第2行以阅读:

REG QUERY "HKCUControl PanelDesktopWindowMetrics" /V AppliedDPI|FIND "0x78">NUL&&GOTO Leave

另外,如果您要使用Choice命令, Choice /?用于使用,则可以用:

替换整个:LOOP部分
:LOOP
ECHO.
CHOICE /M "Would you like to logoff to change Scaling of windows"
IF ERRORLEVEL 2 GOTO Leave
:LogoffNow

最新更新