Windows 8.1でMicrosoft管理コンソールを高DPI対応にするにはどうすればよいですか?


16

Windows 8.1ではシステム全体の「Windows XPスタイル」の高DPIサポートが許可されていないため、Microsoft管理コンソールアプリ(mmc.exe)を高DPI対応にするにはどうすればよいですか?「互換性のトラブルシューティング」コンテキストメニュー項目はありません。

回答:


20

システムファイルの[互換性]タブは非表示になっているため、[高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のようなルートレベルのフォルダーでこのオプションを使用するのは、何百ものレジストリエントリを作成するため、お勧めできません。ただし、場合によっては、特にプロセスエクスプローラーと残りの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設定をより簡単に構成できるはずです。


素晴らしいスクリプト!! まさに私が望んでいたこと。
user20939 14年

3
残念ながら、これはWindows 10では役に立ちません。この方法は他のアプリケーションでは機能しますが、mmc.exeでは機能しません。
AnT

私のために働く。.regファイルは、Windows 10で再起動する必要があります。
joshudson

Windows 10では動作しません。再起動しても役に立ちません。ext2fsdマネージャーのような他のアプリもこの修正で動作します。mmc.exeイベントのプロパティに互換性タブがありません
バルダー

@baldrsこれは私にとってはうまくいったようです。注意すべきことの1つは、マルチディスプレイ環境で同じ解像度のモニターを使用していない場合、Windows 10がディスプレイスケーリングで非常に奇妙なことを行うことです。すべてのディスプレイがネイティブ解像度に設定されていることを確認してから、「推奨」または200%にスケーリングします。Windows 10は、ウィンドウが表示されているディスプレイに応じて内部的に異なるスケーリングを行うことはないようで、メインモニターを選択します。そのモニターは、他のすべてのスケーリングを指示するようです。4kのラップトップモニター、4kの外部およびFullHDの3番目があります。第三モニタは、このまであいまいだった
アンドリュー・T Finnell

2

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ウィンドウ(サービス、デバイスマネージャーなど)を開くと、ウィンドウが大きくなり、シャープになります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.