我正在尝试编写一个批处理文件,该文件将在第一次登录时更改用户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