Bagaimana saya bisa membuat Microsoft Management Console DPI tinggi di Windows 8.1?

16

Karena Windows 8.1 tidak memungkinkan dukungan DPI tinggi "Windows XP style" sistem-lebar, bagaimana saya bisa membuat aplikasi DPI tinggi Microsoft mmole.exe (mmc.exe) sadar? Tidak ada item menu konteks "Pemecahan masalah kompatibilitas" untuknya.

pengguna20939
sumber

Jawaban:

20

Tab Kompatibilitas disembunyikan untuk file sistem, jadi untuk meniru fungsi kotak centang "Nonaktifkan penskalaan pengaturan DPI tinggi" Anda akan menambahkan yang berikut ke registri:

Windows Registry Editor Version 5.00

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

Ini memiliki manfaat tambahan untuk membuat semua snap-in MMC seperti Group Policy Editor juga menggunakan penskalaan asli alih-alih versi raster yang buram.

Anda dapat menyimpannya sebagai file .reg dan mengimpornya, atau menggunakan tempel perintah berikut ke dalam dialog Run:

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

Jika Anda sering menggunakan solusi itu, Anda mungkin ingin menambahkannya ke menu konteks klik kanan untuk file .exe. Anda juga dapat menambahkannya ke file .msi karena tab Kompatibilitas juga tidak ada untuk file-file itu:

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"

Karena pengaturan "Jalankan sebagai Administrator" dan "Nonaktifkan penskalaan DPI" disimpan bersama, menjalankan perintah itu pada file yang sudah diatur untuk dijalankan karena admin akan menghapus bendera itu dan mengatur bendera penskalaan DPI sebagai gantinya. Itu hanya memengaruhi file yang telah Anda centang kotak secara manual, bukan file dengan tingkatExur yang diminta yang benar dalam manifes.

Hanya untuk referensi, ketika keduanya diperiksa stringnya adalah "~ RUNASADMIN HIGHDPIAWARE" tapi saya tidak akan memasukkannya ke dalam opsi menu konteks karena sudah tersedia untuk sekali pakai pada menu konteks dan itu bukan ide yang baik untuk membuat token administrator diperlukan dengan mudah.

Jika Anda ingin opsi untuk menonaktifkan penskalaan DPI untuk file yang dapat dieksekusi dan penginstal di folder tertentu, Anda dapat menggunakan .reg impor berikut ini:

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\""

Menggunakan opsi itu pada folder tingkat root seperti Program Files adalah ide yang buruk karena Anda akan membuat ratusan entri registri. Tetapi untuk beberapa kasus itu penting, terutama untuk Process Explorer dan seluruh utilitas Sysinternals, atau utilitas Nirsoft, yang semuanya berjalan baik dengan penskalaan DPI dinonaktifkan tetapi tidak memiliki opsi yang ditentukan secara eksplisit dalam manifes mereka.

Batch kode terakhir menggunakan perintah mulai internal untuk mengeluarkan jendela command prompt secepat mungkin dan menjaganya tetap diminimalkan karena mem-parsing isi folder. Simbol @ digunakan untuk mencegah mengulang kembali perintah dalam output, dan redirection nul digunakan untuk menyembunyikan output "Operasi selesai dengan sukses." untuk setiap entri karena tidak pernah berubah.

Jika Anda memiliki alat nircmd yang sangat baik, Anda dapat menyembunyikan flash singkat dari jendela command prompt sepenuhnya:

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\""

Jika nircmd.exe tidak ada di jalur Anda, Anda dapat menambahkan lokasinya di atas atau menambahkan foldernya ke jalur Anda di dialog System Environment Variables. Untuk membuka jendela itu, Anda dapat menggunakan perintahrundll32 sysdm.cpl,EditEnvironmentVariables

Argumen dapat dibuat bahwa akan lebih elegan untuk menambahkan kunci registri dengan membuat file .reg saat runtime dan mengimpornya secara diam-diam dengan reg import /sopsi tidak berdokumen . Tetapi dalam pengalaman saya, menulis file apa pun pada saat runtime memunculkan segala macam alarm dengan produk keamanan seperti COMODO Internet Securita, versi yang setara dari Panda, Norton, dll. Dan apa pun yang didasarkan pada model HIPS. Saya tidak melihat kebutuhan untuk melakukan itu ketika hal di atas berfungsi dengan baik, terutama jika Anda menggunakan ini di beberapa komputer atau membagikannya dan tidak ingin membuat alarm palsu untuk orang lain.

Namun jika Anda sudah menggunakan nircmd, masuk akal untuk menggunakan regsetvalperintahnya alih-alih reg adduntuk ekstensi shell .exe dan .msi. Opsi folder masih perlu beralih pada daftar direktori untuk menambahkan setiap entri sehingga tidak akan bekerja untuk mereka. PowerShell dan VBScript adalah opsi tetapi ketersediaannya tergantung pada versi Windows dan sejumlah variabel lainnya. Dari sudut pandang keamanan, VBScript memiliki reputasi sebagai vektor eksploit terutama ketika diunduh dari internet atau dibagikan di jaringan, dan skrip PS1 tidak akan berjalan sama sekali tanpa secara eksplisit menetapkan kebijakan eksekusi PowerShell untuk memungkinkan skrip yang ditandatangani jarak jauh.

Beri tahu saya jika Anda melihat ada yang aneh saat menggunakan kode itu karena masih dalam proses. Yang sedang berkata itu harus membuat mengkonfigurasi pengaturan DPI Windows 8.1 lebih mudah.

Rod Boev
sumber
Script yang luar biasa !! Tepat seperti yang kuharapkan.
user20939
3
Sayangnya, ini sepertinya tidak membantu di bawah Windows 10. Metode ini berfungsi untuk aplikasi lain, tetapi tidak untuk mmc.exe.
AnT
Bekerja untukku. File .reg memerlukan reboot di Windows 10.
joshudson
Tidak bekerja dengan windows 10. Reboot tidak membantu. Juga aplikasi lain seperti manajer ext2fsd bekerja dengan perbaikan ini. acara mmc.exe tidak memiliki tab kompatibilitas di properti
baldrs
@ baldrs Ini sepertinya bekerja untuk saya. Satu hal yang perlu diperhatikan adalah bahwa Windows 10 melakukan beberapa hal yang sangat aneh dengan penskalaan layar jika Anda tidak menggunakan monitor resolusi yang sama di lingkungan multi-display. Periksa untuk memastikan SEMUA tampilan disetel ke resolusi asli, lalu skala ke 'Disarankan', atau 200%. Sepertinya Windows 10 tidak akan secara internal skala berbeda tergantung pada tampilan jendela aktif sehingga mengambil monitor utama yang terbaik yang bisa saya katakan. Monitor itu tampaknya mendikte semua penskalaan lainnya. Saya memiliki monitor laptop 4k, eksternal 4k, dan FullHD ketiga. Monitor ketiga tidak jelas sampai saat ini
Andrew T Finnell
2

Pada Windows 10 Anda dapat mencapai efek yang sama dengan melakukan:

1: Bergantung pada bangunan yang Anda miliki (untuk menemukannya, tekan Windows + R, ketik "winver", tekan Enter):

  • sebelum build 15019: buka Control Panel, Display, Ubah ukuran item, tetapkan level penskalaan kustom
  • build 15019 atau lebih baru: buka Pengaturan, Sistem, Tampilan, Penskalaan kustom

Masukkan tingkat penskalaan secara manual, bahkan jika itu salah satu yang tersedia di dropdown. Anda akan tahu bahwa Anda telah melakukannya dengan benar jika Anda diminta untuk keluar agar pengaturan berlaku.

2: Simpan yang berikut ini ke file .reg di desktop Anda dan klik dua kali untuk menambahkan konten ke registri Anda:

Windows Registry Editor Version 5.00

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

3: Simpan file berikut sebagai 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: Buka semua jendela MMC (Layanan, Pengelola Perangkat, dll.) Dan sekarang akan lebih besar dan lebih tajam

Rod Boev
sumber