Làm cách nào tôi có thể làm cho Microsoft Management Console nhận biết DPI cao trong Windows 8.1?


16

Vì Windows 8.1 không cho phép hỗ trợ DPI cao "kiểu Windows XP" trên toàn hệ thống, làm cách nào tôi có thể làm cho ứng dụng Microsoft Management Console (mmc.exe) cao nhận biết DPI? Không có mục trình đơn ngữ cảnh "Khắc phục sự tương thích" cho nó.

Câu trả lời:


20

Tab Tương thích bị ẩn cho các tệp hệ thống, do đó, để sao chép chức năng của hộp kiểm "Vô hiệu hóa tỷ lệ hiển thị trên cài đặt DPI cao", bạn sẽ thêm phần sau vào sổ đăng ký:

Windows Registry Editor Version 5.00

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

Điều này có thêm lợi ích là làm cho tất cả các snap-in MMC như Trình chỉnh sửa chính sách nhóm cũng sử dụng tỷ lệ gốc thay vì phiên bản rasterized mờ.

Bạn có thể lưu tệp đó dưới dạng tệp .reg và nhập tệp đó hoặc sử dụng dán lệnh sau vào hộp thoại Run:

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

Nếu bạn thấy mình sử dụng cách giải quyết đó thường xuyên, bạn có thể muốn thêm nó vào menu ngữ cảnh nhấp chuột phải cho các tệp .exe. Bạn cũng có thể thêm nó vào các tệp .msi vì tab Tương thích cũng bị thiếu đối với các tệp đó:

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"

Vì cài đặt "Chạy với tư cách quản trị viên" và "Vô hiệu hóa tỷ lệ DPI" được lưu trữ cùng nhau, việc gọi lệnh đó trên tệp đã được đặt để chạy vì quản trị viên sẽ xóa cờ đó và đặt cờ chia tỷ lệ DPI thay thế. Điều đó chỉ ảnh hưởng đến các tệp mà bạn đã kiểm tra thủ công hộp chứ không phải các tệp có tệpExExL thực hiện chính xác trong tệp kê khai của chúng.

Chỉ để tham khảo, khi cả hai được kiểm tra chuỗi là "~ RUNASADMIN HIGHDPIAware" nhưng tôi sẽ không đưa nó vào tùy chọn menu ngữ cảnh vì nó đã có sẵn để sử dụng một lần trên menu ngữ cảnh và không phải là ý tưởng hay để thực hiện mã thông báo quản trị viên cần thiết rất dễ dàng.

Nếu bạn muốn tùy chọn vô hiệu hóa tỷ lệ DPI cho các tệp thực thi và trình cài đặt trong một thư mục cụ thể, bạn có thể sử dụng .reg import sau đây:

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

Sử dụng tùy chọn đó trên thư mục cấp gốc như Tệp chương trình là một ý tưởng tồi vì bạn sẽ tạo hàng trăm mục đăng ký. Nhưng đối với một số trường hợp, điều đó rất cần thiết, đặc biệt đối với Process Explorer và phần còn lại của các tiện ích Sysiternals hoặc các tiện ích Nirsoft, tất cả đều hoạt động tốt với quy mô DPI bị vô hiệu hóa nhưng không có tùy chọn được chỉ định rõ ràng trong bảng kê khai của chúng.

Lô mã cuối cùng sử dụng lệnh start nội bộ để đưa cửa sổ nhắc lệnh ra khỏi đường càng nhanh càng tốt và giữ cho nó được thu nhỏ khi nó phân tích nội dung của thư mục. Biểu tượng @ được sử dụng để ngăn tiếng vang trở lại lệnh trong đầu ra và chuyển hướng nul được sử dụng để ẩn đầu ra "Thao tác đã hoàn tất thành công." cho mỗi mục vì nó không bao giờ thay đổi.

Nếu bạn tình cờ có công cụ nircmd tuyệt vời, bạn có thể ẩn toàn bộ đèn flash của cửa sổ nhắc lệnh:

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

Nếu nircmd.exe không có trong đường dẫn của bạn, bạn có thể thêm vị trí của nó ở trên hoặc thêm thư mục của nó vào đường dẫn của bạn trong hộp thoại Biến môi trường hệ thống. Để hiển thị cửa sổ đó, bạn có thể sử dụng lệnhrundll32 sysdm.cpl,EditEnvironmentVariables

Đối số có thể được đưa ra là sẽ thanh lịch hơn khi thêm các khóa đăng ký bằng cách tạo tệp .reg khi chạy và nhập nó một cách im lặng với reg import /stùy chọn không có giấy tờ . Nhưng theo kinh nghiệm của tôi, việc viết bất kỳ tệp nào trong thời gian chạy sẽ làm tăng tất cả các loại báo động với các sản phẩm bảo mật như COMODO Internet Securita, các phiên bản tương đương của nó từ Panda, Norton, v.v. và bất cứ thứ gì dựa trên mô hình HIPS. Tôi không thấy cần phải làm điều đó khi các công việc trên hoạt động tốt, đặc biệt nếu bạn đang sử dụng tính năng này trên nhiều máy tính hoặc chia sẻ nó và không muốn tạo báo thức sai cho người khác.

Tuy nhiên, nếu bạn đã sử dụng nircmd, sẽ tốt hơn nếu sử dụng regsetvallệnh của nó thay vì reg addcho các phần mở rộng vỏ .exe và .msi. Tùy chọn thư mục vẫn sẽ cần lặp qua danh sách thư mục để thêm từng mục để nó không hoạt động cho những mục đó. PowerShell và VBScript là các tùy chọn nhưng tính khả dụng của chúng phụ thuộc vào phiên bản Windows và một loạt các biến khác. Từ quan điểm bảo mật, VBScript nổi tiếng là một vectơ khai thác, đặc biệt khi được tải xuống từ internet hoặc chia sẻ trên mạng và các tập lệnh PS1 sẽ không chạy hoàn toàn mà không thiết lập chính sách thực thi của PowerShell để cho phép các tập lệnh được ký từ xa.

Hãy cho tôi biết nếu bạn nhận thấy bất cứ điều gì kỳ lạ khi sử dụng mã đó vì nó vẫn đang được tiến hành. Điều đó được nói rằng nó sẽ làm cho việc cấu hình các cài đặt DPI của Windows 8.1 dễ dàng hơn nhiều.


Kịch bản xuất sắc !! Chính xác những gì tôi đã hy vọng.
user20939

3
Thật không may, điều này dường như không giúp ích gì trong Windows 10. Phương pháp này hoạt động cho các ứng dụng khác, nhưng không phải cho mmc.exe.
AnT

Làm việc cho tôi. Tệp .reg yêu cầu khởi động lại trong Windows 10.
joshudson

Không hoạt động với windows 10. Khởi động lại không giúp ích. Ngoài ra các ứng dụng khác như trình quản lý ext2fsd hoạt động với sửa lỗi này. Sự kiện mmc.exe không có bất kỳ tab tương thích nào trong các thuộc tính
baldrs

@baldrs Điều này dường như đã làm việc cho tôi. Một điều cần lưu ý là Windows 10 thực hiện một số điều thực sự hấp dẫn với tỷ lệ hiển thị nếu bạn không sử dụng cùng màn hình độ phân giải trong môi trường đa màn hình. Kiểm tra để đảm bảo TẤT CẢ màn hình được đặt thành độ phân giải gốc, sau đó chia tỷ lệ thành 'Đề xuất' hoặc 200%. Có vẻ như Windows 10 sẽ không mở rộng quy mô nội bộ khác nhau tùy thuộc vào màn hình hiển thị cửa sổ để nó chọn màn hình chính tốt nhất mà tôi có thể biết. Màn hình đó xuất hiện để ra lệnh cho tất cả các tỷ lệ khác. Tôi có màn hình laptop 4k, 4k ngoài và thứ ba FullHD. Màn hình thứ ba mờ cho đến lúc này
Andrew T Finnell

2

Trên Windows 10, bạn có thể đạt được hiệu quả tương tự bằng cách thực hiện:

1: Tùy thuộc vào bản dựng nào bạn có (để tìm nó, nhấn Windows + R, nhập "winver", nhấn Enter):

  • trước khi xây dựng 15019: mở Bảng điều khiển, Hiển thị, Thay đổi kích thước của các mục, đặt mức chia tỷ lệ tùy chỉnh
  • bản dựng 15019 trở lên: mở Cài đặt, Hệ thống, Hiển thị, Chia tỷ lệ tùy chỉnh

Nhập mức chia tỷ lệ theo cách thủ công, ngay cả khi nó có sẵn trong danh sách thả xuống. Bạn sẽ biết bạn đã thực hiện đúng nếu bạn được nhắc đăng xuất để cài đặt có hiệu lực.

2: Lưu phần sau vào tệp .reg trên màn hình của bạn và nhấp đúp vào tệp đó để thêm nội dung vào sổ đăng ký của bạn:

Windows Registry Editor Version 5.00

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

3: Lưu tệp sau dưới dạng 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: Mở bất kỳ cửa sổ MMC nào (Dịch vụ, Trình quản lý thiết bị, v.v.) và giờ đây chúng sẽ lớn hơn và sắc nét hơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.