Bagaimana saya bisa mengatur mode kompatibilitas untuk dieksekusi dari baris perintah?

21

Apakah ada cara untuk mengatur kompatibilitas dengan opsi XP (klik kanan / properties / kompatibilitas ... yang itu, ya :) menjadi executable dari baris perintah?

Atau lebih baik lagi, apakah ada cara untuk mengatur kompatibilitas ke seluruh direktori (executable dalam direktori), sehingga setiap executable yang dikompilasi / dibangun sudah memiliki "flag" di atasnya?

Benteng
sumber
1
@CodyGray - Karena saya menggunakan IDE kompiler lama (dari Win95); mengubah ke yang baru akan menimbulkan beberapa biaya yang kami tidak siap untuk saat ini. Jika saya membangunnya dan memulainya dari IDE, semuanya macet. Jika saya menaruh kompabilitas dan memulainya dari explorer, itu berfungsi. Mana yang cukup baik untuk saya. Hanya saya tidak suka memasang flag kompatibilitas setiap kali setelah membangun. Karena itu pertanyaannya ... :)
Rook
1
@CodyGray - Ya, saya bisa memberikan Anda keseluruhan cerita tapi saya ragu itu akan masuk dalam kotak komitmen di sini (atau tiga dari mereka), jadi saya akan membiarkan pertanyaan terbuka untuk waktu yang lebih lama ...
Rook
1
Ah, saya tahu saya ingat pernah membaca itu di sebuah artikel. Saya akhirnya menemukannya dan memposting jawaban untuk anak cucu. :-) Jangan ragu untuk mengabaikan omelan saya, tapi saya benar-benar ragu Anda akan menemukan pendekatan alternatif.
Cody Grey

Jawaban:

29

Saya tidak tahu alat yang memungkinkan untuk mengatur atau mengubah tanda kompatibilitas aplikasi.

Namun flag yang kompatibel aplikasi disimpan dalam registri (bagian pengguna atau sistem):

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

Oleh karena itu Anda dapat menggunakan editor registri baris perintah standar untuk membuat entri yang diperlukan:

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

Untuk detail lebih lanjut tentang bendera yang tersedia lihat posting blog Menjalankan Aplikasi sebagai Administrator atau dalam Mode Kompatibilitas .

Robert
sumber
1
Hmm, ini hanya mungkin (!) Bekerja ... bahwa baris ketiga "reg.exe ..." ... jadi jika saya mengaturnya untuk setiap exe yang saya miliki di beberapa direktori, itu akan "tetap melekat" ke executable itu bahkan jika dibangun kembali?
Benteng
2
Perilaku normal klik kanan> Properti> Kompatibilitas adalah mengatur kunci di bawah HKCU, kecuali tombol "Ubah pengaturan untuk semua pengguna" ditekan. Kemudian diatur di bawah HKLM untuk semua pengguna, dan tidak dapat diubah melalui dialog.
Mike Brown
11

Jawaban Robert sangat tepat. Untuk sedikit mengembangkannya, dan jawab pertanyaan OP tentang mengatur mode secara massal ...

Jika Anda memiliki folder yang penuh dengan file .exe untuk diproses, Anda dapat melakukan ini:

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

Contoh ini menggunakan HKCU sebagai ganti HKLM; pastikan untuk memilih yang Anda inginkan.

Untuk menghapus pengaturan, dengan prompt konfirmasi untuk masing-masing:

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

Tambahkan /fke akhir jika Anda tidak ingin diminta untuk konfirmasi.

(Jika Anda memilih jawaban ini, silakan pilih Robert juga!)

Mike Brown
sumber