Come posso impostare la modalità di compatibilità per un eseguibile dalla riga di comando?


21

C'è un modo per impostare la compatibilità con l'opzione XP (tasto destro / proprietà / compatibilità ... quello, sì :) su un eseguibile dalla riga di comando?

O meglio, c'è un modo per impostare la compatibilità con un'intera directory (eseguibili nella directory), in modo che ogni eseguibile che viene compilato / compilato abbia già quel "flag" su di esso?


1
@CodyGray - Perché sto usando un vecchio IDE del compilatore (da Win95); il passaggio a uno nuovo indurrebbe alcuni costi per i quali non siamo preparati al momento. Se lo costruisco e lo avvio dall'IDE, tutto si blocca. Se metto la compatibilità e la avvio da Explorer, funziona. Il che è abbastanza buono per me. Solo che non mi piace mettere il flag di compatibilità ogni volta dopo la compilazione. Quindi la domanda ... :)
Rook

1
@CodyGray - Beh, potrei darti tutta la storia, ma dubito che si adatterebbe al riquadro dei commenti qui (o tre di essi), quindi lascerò la domanda aperta ancora per un po '...
Rook

1
Ah, sapevo di ricordarmi di averlo letto in un articolo. Alla fine l'ho trovato e pubblicato una risposta per i posteri. :-) Sentiti libero di ignorare il mio fastidio, ma dubito seriamente che troverai un approccio alternativo.
Cody Gray,

Risposte:


29

Non conosco uno strumento che consenta di impostare o modificare i flag di compatibilità dell'applicazione.

Tuttavia, i flag compatibili dell'applicazione sono memorizzati nel registro (parte utente o di sistema):

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

Pertanto è possibile utilizzare l'editor di registro della riga di comando standard per creare la voce richiesta:

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

Per ulteriori dettagli sui flag disponibili, consultare il post sul blog Esecuzione di un'applicazione come amministratore o in modalità compatibilità .


1
Hmm, questo potrebbe (!) Funzionare ... quella terza riga "reg.exe ..." ... quindi se lo imposto per ogni exe che ho in qualche directory, "rimarrà attaccato" a quell'eseguibile anche se viene ricostruito?
Rook,

2
Il normale comportamento del tasto destro del mouse> Proprietà> Compatibilità consiste nell'impostare le chiavi in ​​HKCU, a meno che non venga premuto il pulsante "Modifica impostazioni per tutti gli utenti". Quindi è impostato in HKLM per tutti gli utenti e non può essere modificato tramite la finestra di dialogo.
Mike Brown,


11

La risposta di Robert fu precisa. Espanderci un po 'e rispondere alla domanda del PO sull'impostazione della modalità in massa ...

Se hai una cartella piena di file .exe da elaborare, puoi farlo:

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

In questo esempio viene utilizzato HKCU anziché HKLM; assicurati di scegliere quello che vuoi davvero.

Per rimuovere le impostazioni, con una richiesta di conferma per ognuna:

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

Aggiungi /falla fine se non desideri che ti venga richiesta la conferma.

(Se voti questa risposta, per favore, vota anche su quella di Robert!)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.