Jak sprawić, by konsola Microsoft Management Console była świadoma w systemie Windows 8.1?


16

Ponieważ system Windows 8.1 nie zezwala na obsługę wysokiej rozdzielczości DPI w stylu „Windows XP”, w jaki sposób mogę ustawić aplikacje o wysokiej rozdzielczości w Microsoft Management Console (mmc.exe)? Nie ma dla niego elementu menu kontekstowego „Rozwiązywanie problemów ze zgodnością”.

Odpowiedzi:


20

Karta Zgodność jest ukryta dla plików systemowych, więc aby powielić funkcję „Wyłącz skalowanie wyświetlacza przy ustawieniach wysokiej DPI”, dodaj do rejestru następujące elementy:

Windows Registry Editor Version 5.00

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

Ma to dodatkową zaletę polegającą na tym, że wszystkie przystawki MMC, takie jak Edytor zasad grupy, również używają natywnego skalowania zamiast rozmytej zrasteryzowanej wersji.

Możesz zapisać ten plik jako .reg i zaimportować go, lub użyć wklej następujące polecenie w oknie dialogowym Uruchom:

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

Jeśli często używasz tego obejścia, możesz dodać go do menu kontekstowego prawym przyciskiem myszy dla plików .exe. Możesz także dodać go do plików .msi, ponieważ dla tych plików brakuje również karty Zgodność:

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"

Ponieważ ustawienia „Uruchom jako administrator” i „Wyłącz skalowanie DPI” są przechowywane razem, wywołanie tego polecenia dla pliku, który jest już ustawiony jako uruchamiany jako administrator, usunie tę flagę i zamiast tego ustawi flagę skalowania DPI. Wpływa to tylko na pliki, dla których ręcznie zaznaczyłeś to pole, a nie na pliki z poprawnym żądanym poziomem ExExutionLevel w swoim manifeście.

Tylko w celach informacyjnych, gdy oba są zaznaczone, ciąg znaków to „~ RUNASADMIN HIGHDPIAWARE”, ale nie wstawiłbym tego do opcji menu kontekstowego, ponieważ jest on już dostępny do jednorazowego użytku w menu kontekstowym i nie jest dobrym pomysłem token administratora jest tak łatwy.

Jeśli chcesz wyłączyć skalowanie DPI dla plików wykonywalnych i plików instalatora w określonym folderze, możesz użyć następującego importu .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\""

Korzystanie z tej opcji w folderze głównym, takim jak Program Files, jest złym pomysłem, ponieważ utworzysz setki wpisów rejestru. Ale w niektórych przypadkach jest to niezbędne, szczególnie dla Process Explorera i pozostałych narzędzi Sysinternals lub narzędzi Nirsoft, które działają doskonale z wyłączonym skalowaniem DPI, ale nie mają wyraźnie określonej opcji w manifestach.

Ostatnia partia kodu używa wewnętrznego polecenia start, aby jak najszybciej usunąć okno wiersza polecenia i zminimalizować je podczas analizowania zawartości folderu. Symbol @ służy do zapobiegania powtórzeniu polecenia na wyjściu, a przekierowanie zerowe służy do ukrycia wyniku „Operacja zakończona powodzeniem”. dla każdego wpisu, ponieważ nigdy się nie zmienia.

Jeśli akurat masz doskonałe narzędzie nircmd, możesz całkowicie ukryć krótkie flashowanie okna wiersza poleceń:

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

Jeśli nircmd.exe nie znajduje się na twojej ścieżce, możesz dodać jego lokalizację powyżej lub dodać folder do ścieżki w oknie dialogowym Zmienne środowiska systemowego. Aby wyświetlić to okno, możesz użyć poleceniarundll32 sysdm.cpl,EditEnvironmentVariables

Można argumentować, że bardziej elegancko byłoby dodać klucze rejestru, tworząc plik .reg w czasie wykonywania i importując go po cichu za pomocą reg import /sopcji nieudokumentowanej . Ale z mojego doświadczenia wynika, że ​​pisanie dowolnych plików w czasie wykonywania wywołuje różnego rodzaju alarmy za pomocą produktów zabezpieczających, takich jak COMODO Internet Securita, jego równoważne wersje z Panda, Norton itp. I wszystko oparte na modelu HIPS. Nie widzę potrzeby, aby to robić, gdy powyższe działa dobrze, szczególnie jeśli używasz tego na wielu komputerach lub udostępniasz go i nie chcesz tworzyć fałszywego alarmu dla kogoś innego.

Jeśli jednak już używasz nircmd, warto użyć jego regsetvalpolecenia zamiast reg adddla rozszerzeń powłoki .exe i .msi. Opcja folderu nadal musiałaby iterować po liście katalogów, aby dodać każdy wpis, aby nie działał dla nich. PowerShell i VBScript są opcjami, ale ich dostępność zależy od wersji systemu Windows i wielu innych zmiennych. Z punktu widzenia bezpieczeństwa VBScript ma reputację wektora wykorzystywania exploitów, szczególnie gdy jest pobierany z Internetu lub udostępniany w sieci, a skrypty PS1 w ogóle nie będą działać bez wyraźnego ustawienia zasad wykonywania PowerShell zezwalających na zdalnie podpisane skrypty.

Daj mi znać, jeśli zauważysz coś dziwnego podczas używania tego kodu, ponieważ wciąż jest on w toku. Biorąc to pod uwagę, powinno to znacznie ułatwić konfigurację ustawień DPI systemu Windows 8.1.


Doskonałe skrypty !! Dokładnie to, na co liczyłem.
user20939

3
Niestety nie wydaje się to pomocne w systemie Windows 10. Ta metoda działa w przypadku innych aplikacji, ale nie w przypadku mmc.exe.
AnT

Pracuje dla mnie. Plik .reg wymaga ponownego uruchomienia w systemie Windows 10.
joshudson,

Nie działa w systemie Windows 10. Ponowne uruchomienie nie pomaga. Z tą poprawką działają również inne aplikacje, takie jak menedżer ext2fsd. Zdarzenie mmc.exe nie ma żadnej karty zgodności we właściwościach
baldrs,

@baldrs To wydawało się działać dla mnie. Należy zwrócić uwagę na to, że system Windows 10 naprawdę zadziwia skalowaniem wyświetlacza, jeśli nie używasz monitorów o tej samej rozdzielczości w środowisku z wieloma wyświetlaczami. Sprawdź, czy WSZYSTKIE wyświetlacze są ustawione na rozdzielczość natywną, a następnie skaluj do „Zalecane” lub 200%. Wygląda na to, że Windows 10 nie skaluje się wewnętrznie inaczej w zależności od wyświetlacza, w którym jest wyświetlane okno, więc wybiera najlepszy monitor główny, jaki mogę powiedzieć. Ten monitor wydaje się dyktować wszystkie inne skalowania. Mam monitor laptopa 4k, zewnętrzny 4k i trzeci FullHD. Trzeci monitor był niewyraźny aż do tego czasu
Andrew T Finnell,

2

W systemie Windows 10 możesz osiągnąć ten sam efekt, wykonując:

1: W zależności od posiadanej wersji (aby ją znaleźć, naciśnij Windows + R, wpisz „winver”, naciśnij Enter):

  • przed kompilacją 15019: otwórz Panel sterowania, Wyświetl, Zmień rozmiar elementów, ustaw niestandardowy poziom skalowania
  • kompilacja 15019 lub nowsza: otwórz Ustawienia, System, Wyświetlacz, Skalowanie niestandardowe

Wprowadź poziom skalowania ręcznie, nawet jeśli jest on dostępny w menu rozwijanym. Będziesz wiedział, że zrobiłeś to poprawnie, jeśli pojawi się monit o wylogowanie się, aby ustawienie zaczęło obowiązywać.

2: Zapisz następujące elementy w pliku .reg na pulpicie i kliknij go dwukrotnie, aby dodać zawartość do rejestru:

Windows Registry Editor Version 5.00

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

3: Zapisz następujący plik jako 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: Otwórz dowolne okna MMC (Usługi, Menedżer urządzeń itp.), A będą one teraz większe i ostrzejsze

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.