Làm cách nào tôi có thể đặt chế độ tương thích cho một tệp thực thi từ dòng lệnh?


20

Có cách nào để thiết lập khả năng tương thích với tùy chọn XP (nhấp chuột phải / thuộc tính / tương thích ... cái đó, có :) thành một tệp thực thi từ dòng lệnh không?

Hoặc tốt hơn, có cách nào để thiết lập khả năng tương thích cho toàn bộ thư mục (tệp thực thi trong thư mục), để mọi tệp thực thi được biên dịch / xây dựng đều có "cờ" trên đó không?


1
@CodyGray - Vì tôi đang sử dụng IDE trình biên dịch cũ (từ Win95); thay đổi sang một cái mới sẽ gây ra một số chi phí mà chúng tôi chưa chuẩn bị ngay bây giờ. Nếu tôi xây dựng nó và khởi động nó từ IDE, toàn bộ sự cố sẽ sụp đổ. Nếu tôi đặt khả năng tương thích và khởi động nó từ trình thám hiểm, nó hoạt động. Đó là đủ tốt cho tôi. Chỉ có tôi không thích đặt cờ tương thích mỗi lần sau khi xây dựng. Vì vậy, câu hỏi ... :)
Rook

1
@CodyGray - Chà, tôi có thể cung cấp cho bạn toàn bộ câu chuyện nhưng tôi nghi ngờ nó sẽ phù hợp với hộp hoa hồng ở đây (hoặc ba trong số chúng), vì vậy tôi sẽ để câu hỏi mở ra một lúc nữa ...
Rook

1
Ah, tôi biết tôi nhớ đã đọc nó trong một bài báo. Cuối cùng tôi đã tìm thấy nó và đăng một câu trả lời cho hậu thế. :-) Hãy bỏ qua sự cằn nhằn của tôi, nhưng tôi thực sự nghi ngờ bạn sẽ tìm thấy một cách tiếp cận khác.
Cody Grey

Câu trả lời:


28

Tôi không biết một công cụ cho phép đặt hoặc thay đổi cờ tương thích ứng dụng.

Tuy nhiên, cờ tương thích của ứng dụng được lưu trữ trong sổ đăng ký (phần người dùng hoặc hệ thống):

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Do đó, bạn có thể sử dụng trình soạn thảo sổ đăng ký dòng lệnh tiêu chuẩn để tạo mục nhập bắt buộc:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"

Để biết thêm chi tiết về các cờ có sẵn, hãy xem bài đăng trên blog Chạy Ứng dụng với tư cách Quản trị viên hoặc ở Chế độ Tương thích .


1
Hmm, cái này có thể (!) Hoạt động ... dòng thứ ba "reg.exe ..." ... vì vậy nếu tôi đặt nó cho mọi exe tôi có trong một thư mục nào đó, nó sẽ "gắn liền" với tệp thực thi đó nếu nó được xây dựng lại?
Rook

2
Hành vi thông thường của nhấp chuột phải> Thuộc tính> Tương thích là đặt các phím trong HKCU, trừ khi nhấn nút "Thay đổi cài đặt cho tất cả người dùng". Sau đó, nó được đặt dưới HKLM cho tất cả người dùng và không thể thay đổi thông qua hộp thoại.
Mike Brown


11

Câu trả lời của Robert là tại chỗ. Để mở rộng về nó một chút và trả lời câu hỏi của OP về việc cài đặt chế độ ...

Nếu bạn có một thư mục chứa đầy các tệp .exe để xử lý, bạn có thể thực hiện việc này:

for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"

Ví dụ này sử dụng HKCU thay vì HKLM; hãy chắc chắn để chọn một trong những bạn thực sự muốn.

Để xóa cài đặt, với lời nhắc xác nhận cho từng người:

for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"

Thêm /fvào cuối nếu bạn không muốn được nhắc xác nhận.

(Nếu bạn bỏ phiếu cho câu trả lời này, vui lòng bỏ phiếu cho Robert!)

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.