Conocer la ruta del ejecutable de un proceso
Publicado: 31 Dic 2009, 14:50
Hola
Necesitaba saber la ruta del ejecutable de un proceso. Recordaba, que en "Scripts", había un script de Nahuel que hacía esto entre otras cosas, así que lo he buscado y aunque me ha costado un poquillo sacar solo el código que necesitaba, pues ese programa que, aunque no es el post adecuado... aprovecho para felicitar a Nahuel por él, da mucha info sobre los procesos, que no necesito por ahora.
Tras un rato, esto es lo que he montado para obtener la ruta de un proceso:
La duda es la siguiente:
En la función original donde está la mayoría del código anterior (GetProcessProperties()) dice que se necesitan pribilegios de administrador para que funcione. Yo, de los objetos aún ando pez, así que me he limitado a copiarlos y pegarlos, y creo que en ellos está el tema. Imagino, que concretamente en:
¿Puede modificarse esta función para que no sea necesario tener pribilegios de administrador para saber el path de un proceso?
Pue´s quizá el programa se ejecute en una máquina que no tenga estos pribilegios...
Si no se puede ¿Puede saberse el path de un proceso de otra forma que no implique ser administrador del equipo?
Gracias,
¡FELIZ AÑO!
Salu2!
Necesitaba saber la ruta del ejecutable de un proceso. Recordaba, que en "Scripts", había un script de Nahuel que hacía esto entre otras cosas, así que lo he buscado y aunque me ha costado un poquillo sacar solo el código que necesitaba, pues ese programa que, aunque no es el post adecuado... aprovecho para felicitar a Nahuel por él, da mucha info sobre los procesos, que no necesito por ahora.
Tras un rato, esto es lo que he montado para obtener la ruta de un proceso:
Código: Seleccionar todo
GetProcessPath("System")
Func GetProcessPath($ArgProc)
Local $N
$ArgProc=StringLower($ArgProc)
$WmiObj=ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\.\root\cimv2")
If IsObj($WmiObj) Then
$ColProcs=$WmiObj.ExecQuery("select * from win32_process")
If IsObj($ColProcs) Then
If $ColProcs.count=0 Then Return 0
For $OProc In $ColProcs
If StringLower($OProc.Name)==$ArgProc Then
Return $OProc.ExecutablePath
EndIf
$N+=1
Next
Return 0
Else
Return 0
EndIf
$ColProcs=0
EndIf
EndFunc
En la función original donde está la mayoría del código anterior (GetProcessProperties()) dice que se necesitan pribilegios de administrador para que funcione. Yo, de los objetos aún ando pez, así que me he limitado a copiarlos y pegarlos, y creo que en ellos está el tema. Imagino, que concretamente en:
Código: Seleccionar todo
$WmiObj=ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\.\root\cimv2")
Pue´s quizá el programa se ejecute en una máquina que no tenga estos pribilegios...
Si no se puede ¿Puede saberse el path de un proceso de otra forma que no implique ser administrador del equipo?
Gracias,
¡FELIZ AÑO!
Salu2!