Windows 8.1'de Microsoft Yönetim Konsolu'nu yüksek DPI'den nasıl haberdar edebilirim?


16

Windows 8.1, sistem genelinde "Windows XP stili" yüksek DPI desteğine izin vermediğinden, Microsoft Yönetim Konsolu uygulamalarını (mmc.exe) yüksek DPI'lı nasıl bilinçli hale getirebilirim? "Uyumluluk sorunlarını giderme" bağlam menü öğesi yok.

Yanıtlar:


20

Uyumluluk sekmesi sistem dosyaları için gizlidir, bu nedenle "Yüksek DPI ayarlarında ekran ölçeklendirmeyi devre dışı bırak" onay kutusunun işlevselliğini çoğaltmak için kayıt defterine aşağıdakileri eklersiniz:

Windows Registry Editor Version 5.00

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

Bu, Grup İlkesi Düzenleyicisi gibi tüm MMC ek bileşenlerinin de bulanık rasterleştirilmiş sürüm yerine yerel ölçeklendirmeyi kullanmasının ek bir yararı vardır.

Bunu .reg dosyası olarak kaydedip içe aktarabilir veya Çalıştır iletişim kutusuna aşağıdaki komutu yapıştırın:

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

Bu geçici çözümü sık sık kullanıyorsanız, .exe dosyaları için sağ tıklatma bağlam menüsüne eklemek isteyebilirsiniz. Ayrıca, bu dosyalar için Uyumluluk sekmesi eksik olduğu için .msi dosyalarına da ekleyebilirsiniz:

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"

"Yönetici Olarak Çalıştır" ve "DPI ölçeklendirmeyi devre dışı bırak" ayarları birlikte saklandığından, bu komutu yönetici olarak çalıştırılmak üzere ayarlanmış bir dosyada çağırmak o bayrağı temizler ve bunun yerine DPI ölçeklendirme bayrağını ayarlar. Bu, bildirim kutusunda doğru requestedExecutionLevel olanları değil, yalnızca kutuyu el ile işaretlediğiniz dosyaları etkiler.

Sadece referans için, her ikisi de işaretlendiğinde dize "~ RUNASADMIN HIGHDPIAWARE" dir, ancak içerik menüsünde zaten bir kerelik kullanım için mevcut olduğundan ve bunu yapmak için iyi bir fikir olmadığından, bunu bir bağlam menüsü seçeneğine koyamazdım. yönetici belirteci çok kolay gerekli.

Belirli bir klasördeki yürütülebilir ve yükleyici dosyaları için DPI ölçeklendirmesini devre dışı bırakma seçeneğini kullanmak istiyorsanız, aşağıdaki .reg içe aktarma işlemini kullanabilirsiniz:

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

Bu seçeneği Program Files gibi kök düzeyindeki bir klasörde kullanmak kötü bir fikirdir, çünkü yüzlerce kayıt defteri girdisi oluşturacaksınız. Ancak bazı durumlarda, özellikle Process Explorer ve diğer Sysinternals yardımcı programları veya Nirsoft yardımcı programları için, hepsi DPI ölçeklendirmesi devre dışı bırakıldığında harika çalışan ancak manifestlerinde açıkça belirtilmeyen seçeneğe sahip olmak önemlidir.

Son kod grubu, komut istemi penceresini mümkün olan en kısa sürede ortadan kaldırmak ve klasörün içeriğini ayrıştırırken simge durumuna küçültülmüş tutmak için dahili start komutunu kullanır. @ Sembolü çıktıdaki komutun yankılanmasını önlemek için kullanılır ve "Yeniden işlem başarıyla tamamlandı" çıktısını gizlemek için sıfır yönlendirme kullanılır. asla değişmediği için her giriş için.

Mükemmel nircmd aracına sahipseniz, komut istemi penceresinin kısa flaşını tamamen gizleyebilirsiniz:

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 yolunuzda değilse, yukarıdaki konumu ekleyebilir veya klasörünü Sistem Ortamı Değişkenleri iletişim kutusundaki yolunuza ekleyebilirsiniz. Bu pencereyi açmak için şu komutu kullanabilirsiniz:rundll32 sysdm.cpl,EditEnvironmentVariables

Bağımsız değişken, çalışma zamanında bir .reg dosyası oluşturarak ve belgesiz reg import /sseçenekle sessizce içe aktararak kayıt defteri anahtarlarını eklemenin daha zarif olacağı düşünülebilir . Ancak tecrübelerime göre, çalışma zamanında herhangi bir dosya yazmak, COMODO Internet Securita gibi güvenlik ürünleri, Panda, Norton vb. Yukarıdaki işlemler gayet iyi çalıştığında, özellikle bunu birden fazla bilgisayarda kullanıyorsanız veya paylaşıyorsanız ve başka biri için yanlış alarm oluşturmak istemiyorsanız bunu yapmaya gerek duymuyorum.

Ancak zaten nircmd kullanıyorsanız , .exe ve .msi kabuk uzantıları regsetvalyerine komutunu kullanmak mantıklı olacaktır reg add. Klasör seçeneğinin, her girişi eklemek için dizin listesi üzerinde yineleme yapması gerekir, böylece bunlar için çalışmayacaktır. PowerShell ve VBScript seçeneklerdir, ancak bunların kullanılabilirliği Windows sürümüne ve diğer birçok değişkene bağlıdır. Güvenlik açısından, VBScript özellikle internetten indirildiğinde veya bir ağda paylaşıldığında bir istismar vektörü olarak bilinir ve PS1 komut dosyaları, PowerShell'in yürütme ilkesini uzaktan imzalı komut dosyalarına izin verecek şekilde açıkça ayarlamadan hiç çalışmaz.

Hala devam eden bir çalışma olduğu için bu kodu kullanırken garip bir şey fark ederseniz bana bildirin. Windows 8.1'in DPI ayarlarını yapılandırmayı çok daha kolay hale getirmesi gerektiği söyleniyor.


Mükemmel senaryolar !! Tam olarak ne umuyordum.
30:14

3
Ne yazık ki, bu Windows 10 altında yardımcı görünmüyor. Bu yöntem diğer uygulamalar için çalışır, ancak mmc.exe için değil.
AnT

Benim için çalışıyor. .Reg dosyası, Windows 10'da yeniden başlatılmasını gerektirir.
joshudson

Windows 10 ile çalışmaz. Yeniden başlatma yardımcı olmaz. Ayrıca ext2fsd yöneticisi gibi diğer uygulamalar bu düzeltme ile çalışır. mmc.exe olayının özelliklerinde herhangi bir uyumluluk sekmesi yok
baldrs

@baldrs Bu benim için işe yaradı. Dikkat edilmesi gereken bir şey, çok çözünürlüklü bir ortamda aynı çözünürlük monitörlerini kullanmıyorsanız, Windows 10'un ekran ölçeklendirmeyle gerçekten tuhaf şeyler yapmasıdır. TÜM ekranların doğal çözünürlüğe ayarlandığından emin olun, ardından 'Önerilen' veya% 200 olarak ölçeklendirin. Windows 10, bir pencerenin açık olduğu ekrana bağlı olarak dahili olarak farklı ölçeklenmeyecek gibi görünüyor, bu yüzden anlatabileceğim en iyi ana monitörü seçiyor. Bu monitör diğer tüm ölçeklendirmeleri dikte ediyor gibi görünüyor. Bir 4k dizüstü bilgisayar monitörünüz, 4k harici ve FullHD üçüncü var. Üçüncü monitör şu ana kadar bulanıktı
Andrew T Finnell

2

Windows 10'da aşağıdakileri yaparak aynı etkiyi elde edebilirsiniz:

1: Hangi yapıya sahip olduğunuza bağlı olarak (bulmak için Windows + R tuşlarına basın, "winver" yazın, Enter tuşuna basın):

  • 15019 derlemeden önce: Denetim Masası'nı açın, Ekran, öğelerin boyutunu değiştirin, özel bir ölçeklendirme seviyesi ayarlayın
  • 15019 veya sonraki sürüm: Ayarlar, Sistem, Ekran, Özel ölçeklendirme'yi açın

Ölçekleme düzeyini, açılır menüde mevcut olsa bile manuel olarak girin. Ayarın geçerli olması için oturumu kapatmanız istenirse bunu doğru yaptığınızı bilirsiniz.

2: Aşağıdakileri masaüstünüzdeki bir .reg dosyasına kaydedin ve içeriği kayıt defterinize eklemek için çift tıklayın:

Windows Registry Editor Version 5.00

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

3: Aşağıdaki dosyayı farklı kaydedin 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: Herhangi bir MMC penceresini açın (Hizmetler, Aygıt Yöneticisi vb.) Ve şimdi daha büyük ve daha keskin olacaklar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.