Windows 8.1에서 Microsoft Management Console을 높은 DPI로 인식하려면 어떻게해야합니까? 않으므로 Microsoft

Windows 8.1에서는 시스템 전체의 “Windows XP 스타일”높은 DPI 지원을 허용하지 않으므로 Microsoft Management Console 앱 (mmc.exe)을 높은 DPI로 인식하려면 어떻게해야합니까? “호환성 문제 해결”컨텍스트 메뉴 항목이 없습니다.



답변

호환성 탭은 시스템 파일에 대해 숨겨져 있으므로 “높은 DPI 설정에서 디스플레이 크기 조정 비활성화”확인란의 기능을 복제하려면 레지스트리에 다음을 추가하십시오.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\\Windows\\System32\\mmc.exe"="~ HIGHDPIAWARE"

이것은 그룹 정책 편집기와 같은 모든 MMC 스냅인이 모호한 래스터 화 된 버전 대신 기본 크기 조정을 사용하도록하는 추가 이점을 제공합니다.

이 파일을 .reg 파일로 저장하고 가져 오거나 다음 명령을 실행 대화 상자에 붙여 넣을 수 있습니다.

reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Windows\System32\mmc.exe" /f /t REG_SZ /d "~ HIGHDPIAWARE"

이 해결 방법을 자주 사용하는 경우 .exe 파일의 마우스 오른쪽 버튼 클릭 상황에 맞는 메뉴에 추가 할 수 있습니다. 해당 파일에 대한 호환성 탭도 없기 때문에 .msi 파일에 추가 할 수도 있습니다.

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\exefile\shell\disabledpi]

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi\command]
@="cmd /c @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"
"IsolatedCommand"="cmd /c @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"

[-HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi\command]
@="cmd /c @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"
"IsolatedCommand"="cmd /c @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"

“관리자 권한으로 실행”및 “DPI 스케일링 비활성화”설정이 함께 저장되므로 이미 관리자로 실행하도록 설정된 파일에서 해당 명령을 호출하면 해당 플래그가 지워지고 대신 DPI 스케일링 플래그가 설정됩니다. 이는 매니페스트에 올바른 requestedExecutionLevel이있는 파일이 아니라 수동으로 상자를 선택한 파일에만 영향을줍니다.

참고로, 둘 다 확인되면 문자열은 “~ RUNASADMIN HIGHDPIAWARE”이지만 상황에 맞는 메뉴에서 한 번만 사용할 수 있기 때문에 상황에 맞는 메뉴 옵션에 넣지 않을 것입니다. 관리자 토큰이 너무 쉽게 필요합니다.

특정 폴더에서 실행 파일 및 설치 프로그램 파일에 대해 DPI 스케일링을 비활성화하는 옵션을 원하는 경우 다음 .reg 가져 오기를 사용할 수 있습니다.

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\shell\disabledpi]

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi\command]
@="cmd /c @start /min cmd /c for /f \"usebackq delims=\" %%i in (`dir /b /s \"%1\\*.exe\" \"%1\\*.msi\"`) do @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="cmd /c @start /min cmd /c for /f \"usebackq delims=\" %%i in (`dir /b /s \"%1\\*.exe\" \"%1\\*.msi\"`) do @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

Program Files와 같은 루트 수준 폴더에서이 옵션을 사용하면 수백 개의 레지스트리 항목을 만들 수 있으므로 좋지 않습니다. 그러나 일부 경우, 특히 Process Explorer 및 나머지 Sysinternals 유틸리티 또는 Nirsoft 유틸리티의 경우 DPI 스케일링이 비활성화 된 상태에서 실행되지만 매니페스트에 명시 적으로 지정된 옵션이없는 경우가 필수적입니다.

마지막 코드 묶음은 내부 시작 명령을 사용하여 명령 프롬프트 창을 가능한 한 빨리 방해하지 않고 폴더 내용을 구문 분석 할 때 최소화합니다. @ 기호는 출력에서 ​​명령을 에코하는 것을 방지하는 데 사용되며 출력을 숨기는 데 nul 리디렉션이 사용됩니다. “작업이 성공적으로 완료되었습니다.” 변경되지 않기 때문에 각 항목마다.

우수한 nircmd 도구가 있으면 명령 프롬프트 창의 간단한 플래시를 완전히 숨길 수 있습니다.

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\exefile\shell\disabledpi]

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi\command]
@="nircmd.exe execmd reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

[-HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi\command]
@="nircmd.exe execmd reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

[-HKEY_CLASSES_ROOT\Directory\shell\disabledpi]

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi\command]
@="nircmd.exe execmd for /f \"usebackq delims=\" %%i in (`dir /b /s \"%1\\*.exe\" \"%1\\*.msi\"`) do @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd for /f \"usebackq delims=\" %%i in (`dir /b /s \"%1\\*.exe\" \"%1\\*.msi\"`) do @reg add \"HKCU\\Software\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

nircmd.exe가 경로에 없으면 위의 위치를 ​​추가하거나 시스템 환경 변수 대화 상자에서 해당 폴더를 경로에 추가하십시오. 해당 창을 불러 오려면 다음 명령을 사용할 수 있습니다rundll32 sysdm.cpl,EditEnvironmentVariables

런타임에 .reg 파일을 작성하고 문서화되지 않은 reg import /s옵션을 사용하여 자동으로 가져와 레지스트리 키를 추가하는 것이 더 우아하다는 주장을 할 수있었습니다 . 그러나 내 경험상 런타임에 파일을 작성하면 COMODO Internet Securita와 같은 보안 제품, Panda, Norton 등의 동등한 버전 및 HIPS 모델 기반의 모든 제품으로 모든 종류의 경보가 발생합니다. 위의 내용이 제대로 작동 할 때, 특히 여러 컴퓨터에서 이것을 사용하거나 공유하고 다른 사람에게 잘못된 경보를 만들고 싶지 않은 경우에는 그렇게 할 필요가 없습니다.

그러나 이미 nircmd를 사용하고 있다면 .exe 및 .msi 셸 확장 regsetval대신 명령 을 사용하는 것이 좋습니다 reg add. 폴더 옵션은 여전히 ​​디렉토리 목록을 반복하여 각 항목을 추가해야 해당 항목이 작동하지 않습니다. PowerShell 및 VBScript는 옵션이지만 가용성은 Windows 버전 및 기타 여러 변수에 따라 다릅니다. 보안 관점에서 VBScript는 특히 인터넷에서 다운로드하거나 네트워크에서 공유 할 때 악용 경로로 명성을 얻었으며 원격 서명 된 스크립트를 허용하도록 PowerShell의 실행 정책을 명시 적으로 설정하지 않으면 PS1 스크립트가 전혀 실행되지 않습니다.

코드가 아직 진행 중이므로 해당 코드를 사용할 때 이상한 점이 있으면 알려주십시오. Windows 8.1의 DPI 설정을 훨씬 쉽게 구성 할 수 있어야합니다.


답변

Windows 10에서는 다음을 수행하여 동일한 효과를 얻을 수 있습니다.

1 : 빌드 한 빌드에 따라 (찾으려면 Windows + R을 누르고 “winver”를 입력하고 Enter를 누르십시오)

  • 빌드 15019 전 : 제어판, 디스플레이, 항목 크기 변경, 사용자 지정 스케일링 수준 설정
  • 빌드 15019 이상 : 설정, 시스템, 디스플레이, 사용자 정의 스케일링 열기

드롭 다운에서 사용 가능한 스케일링 레벨 인 경우에도 스케일링 레벨을 수동으로 입력하십시오. 설정을 적용하려면 로그 아웃하라는 메시지가 표시되면 올바르게 수행 한 것입니다.

2 : 다음을 데스크탑의 .reg 파일에 저장하고 두 번 클릭하여 레지스트리에 내용을 추가하십시오.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
"PreferExternalManifest"=dword:00000001

3 : 다음 파일을 다른 이름으로 저장 c:\windows\system32\mmc.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0">
<assemblyIdentity
    processorArchitecture="x86"
    version="5.1.0.0"
    name="Microsoft.Windows.MMC"
    type="win32"
/>
<description>Microsoft Management Console</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel
                level="highestAvailable"
                uiAccess="false"
            />
        </requestedPrivileges>
    </security>
</trustInfo>
<asmv3:application>
   <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        <dpiAware>True/PM</dpiAware>
   </asmv3:windowsSettings>
</asmv3:application>
</assembly>

4 : MMC 창 (서비스, 장치 관리자 등)을 열면 더 크고 선명 해집니다.


답변