2010-06-24 8 views
5

Seguendo la guida di Microsoft, http://msdn.microsoft.com/en-us/library/ee872121(VS.85).aspx, sono in grado di ottenere che il mio programma sia in grado di fare in modo che un programma risolva le librerie dinamiche richieste in ordine perché funzioni.Aggiunta di percorsi specifici dell'applicazione, quindi funziona dalla riga di comando in Windows

Quindi aggiungo un valore con nome e percorso completi al mio eseguibile e aggiungo sottochiave a questa voce (percorso denominato) con il percorso completo della directory dei file DLL.

E magia. Funziona. Vado nel menu di avvio e digita myprogram.exe e si avvia e ora è in grado di localizzare correttamente i file dll.

Tuttavia, se si avvia il prompt dei comandi utilizzando il comando cmd.exe e quindi si prova a eseguire myprogram.exe non è più possibile risolvere la DLL. Per qualche motivo il prompt dei comandi non sembra rispettare/leggere i valori del registro quando è impostato in HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Percorsi

Qualsiasi suggerimento su come posso far funzionare questo comportamento dall'interno del prompt dei comandi e dal menu di avvio?

risposta

5

È corretto. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths viene utilizzato da ShellExecuteEx e non da CreateProcess. Quindi non tutti i programmi useranno le impostazioni da App Paths della tua applicazione. Se si desidera definire PATH per cmd.exe, è possibile utilizzare la sottochiave di App Paths con il nome cmd.exe oppure utilizzare un vecchio file %SystemRoot%\System32\autoexec.nt per modificare la variabile di ambiente PATH.

+0

Perfetto. Questo risolve il problema. – Smidstrup

+1

Cosa intendi con "usa sottochiave di percorsi app con il nome cmd.exe"? –

+1

@Mikhail Orlov: è possibile creare sottochiave "cmd.exe" sotto "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths" e creare il valore REG_SZ con il nome "Percorso" e qualsiasi percorso come valore. Quindi si sceglie all'inizio "cmd.exe" dal menu di avvio "Esegui". Puoi vedere con "set PATH" che la variabile environmant Path ha il percorso che inserisci nel registro come prima. – Oleg

-2

Farò del mio meglio.

Innanzitutto, si noti che sia il cmd & che le opzioni del menu di esecuzione \ start eseguono tutto in C: \ WINDOWS \ system32.

Se non ci sei, allora potrebbe funzionare.

se non si desidera inserirlo, è possibile modificare le "variabili ambientali" facendo clic con il pulsante destro del mouse su "il mio computer" -> "proprietà" -> "Avanzate" -> "variabili ambientali" .

buona fortuna.

+0

Il post di Op era correlato al suggerimento App Paths di Microsoft nel collegamento. – Travis

1

È anche possibile utilizzare "START/WAIT app.exe" dalla riga di comando che utilizza ShellExecuteEx.

Problemi correlati