Para aclarar: La pregunta es realmente: Cómo localizo el cliente de línea de comandos de Mercurial. Si la respuesta es aplicable a cualquier ejecutable, mucho mejor, pero estoy realmente interesado en el archivo ejecutable hg.exe
.¿Cómo encontrar la ruta completa al ejecutable de Mercurial, cuando Windows puede ubicarlo?
Si conozco el nombre de un archivo ejecutable, digamos hg.exe
, el cliente de línea de comandos de Mercurial, y Windows sabe dónde está porque puedo ejecutar hg log
desde un símbolo del sistema y se ejecuta, ¿qué pasos están involucrados para mí? encontrar el ejecutable yo mismo, de la misma manera que el símbolo del sistema y Windows lo hace?
Básicamente, si Windows puede ubicarlo, quiero que mi programa pueda localizarlo.
¿Hay una función WinAPI, o similar? El código se ejecutará en .NET, escrito en C#, por lo que si hay algo incorporado en .NET para esto sería la solución preferida, pero de lo contrario no me resultará contrario al uso de P/Invoke para esto.
He visto un posible duplicado de esta pregunta: c# Check if an executable exists in the windows path, pero ¿es eso todo lo que hay que hacer? Simplemente itere sobre el contenido de la variable de entorno PATH
y busque en cada uno de esos directorios el ejecutable.
Tengo una vaga noción de que ése es solo uno de los pasos involucrados, y posiblemente que hay anulaciones de registro que Windows puede usar y que debería conocer, así que publicaré la pregunta aquí.
Si, por otro lado, realmente solo existe la variable PATH en juego aquí, probablemente se cierre con seguridad como un duplicado.
Ok, entonces eso es lo que haré. El código no está escrito en piedra de todos modos, así que si descubro más tarde, siempre puedo cambiarlo. El método PATH funciona muy bien ahora en las máquinas en las que lo probé, así que me quedaré con eso por el momento. Gracias. –
No del todo. "Registro" (o más bien, la clave de registro App Paths) solo se usa al iniciar un proceso con ShellExecute (como se hace mediante "Ejecutar ..."), pero no mediante CreateProcess (como lo hizo el procesador de comandos) –
@BillyOneal bien punto, pero estaba a punto de publicar la URL del grupo de hg sobre cómo se articula en% PATH% de todos modos. – jcolebrand