2010-06-24 8 views
5

Siguiendo la guía de Microsoft, http://msdn.microsoft.com/en-us/library/ee872121(VS.85).aspx, puedo hacer que mi programa pueda hacer que un programa resuelva las bibliotecas dinámicas que se requieren para para que funcioneAgregar rutas de acceso específicas de una aplicación, entonces funciona desde la línea de comando en Windows

Así que agrego un valor con el nombre completo y la ruta a mi ejecutable, y agrego una subclave a esta entrada (ruta con nombre) con la ruta completa al directorio de los archivos DLL.

Y mágico. Funciona. Voy al menú de inicio y escribo myprogram.exe, que se inicia y ahora puede ubicar correctamente los archivos dll.

Sin embargo, si inicio el símbolo del sistema con el comando cmd.exe y luego intento ejecutar myprogram.exe ya no puede resolver las DLL. Por alguna razón, el símbolo del sistema no parece respetar/leer los valores del registro cuando está configurado en HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths

Cualquier sugerencia sobre cómo puedo lograr que este comportamiento funcione desde el símbolo del sistema y desde el menú de inicio?

Respuesta

5

Es correcto. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths es utilizado por ShellExecuteEx y no por CreateProcess. Por lo tanto, no todos los programas utilizarán la configuración del App Paths de su aplicación. Si desea definir PATH para cmd.exe, puede utilizar la subclave de App Paths con el nombre cmd.exe o utilizar un archivo antiguo %SystemRoot%\System32\autoexec.nt para modificar la variable de entorno PATH.

+0

Perfecto. Esto resuelve el problema. – Smidstrup

+1

¿Qué quiere decir con "usar la subclave de rutas de la aplicación con el nombre cmd.exe"? –

+1

@Mikhail Orlov: puede crear una subclave "cmd.exe" en la ruta 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App' y crear el valor REG_SZ con el nombre" Ruta "y cualquier ruta como valor. Luego elige al comienzo "cmd.exe" desde el menú de inicio "Ejecutar". Puede ver con "establecer RUTA" que la variable Entorno de ruta tiene la ruta que ingresa en el registro como la primera. – Oleg

-2

Haré mi mejor esfuerzo.

Primero, observe que las opciones del menú run \ start & ejecutan todo en C: \ WINDOWS \ system32.

Si tu dll estaba allí, entonces funcionaría.

si no quiere ponerlo allí, puede cambiar las "variables del entorno" haciendo clic con el botón derecho del mouse en "mi computadora" -> "propiedades" -> "Avanzado" -> "variables ambientales" .

buena suerte.

+0

La publicación de Op se relacionó con la recomendación de Microsoft Path Paths en el enlace. – Travis

1

También es posible utilizar "START/WAIT app.exe" desde la línea de comandos que usa ShellExecuteEx.

Cuestiones relacionadas