Pregunta

Tengo el siguiente código para finalizar un proceso, pero aún recibo un código de error 2 (Acceso denegado).

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'MSSEARCH.exe'")
For each objProcess in colProcessList
  wscript.echo objProcess.processid
  intrc = objProcess.Terminate()
  if intrc = 0 then wscript.echo "succesfully killed process" else wscript.echo "Could not kill process. Error code: " & intrc End if
¿Fue útil?

Solución

Es bastante legítimo obtener " acceso denegado " para terminar un programa. Si se trata de un servicio (que supongo que es mssearch.exe), es probable que se esté ejecutando como el " SISTEMA " usuario, que tiene privilegios más altos que incluso la cuenta de administrador.

No puede iniciar sesión como la cuenta del SISTEMA, pero probablemente podría escribir un servicio para administrar otros servicios ...

Otros consejos

Como usuario sin privilegios, solo puede finalizar los procesos que posee. En un entorno multiusuario, esto puede morderle en el tobillo, porque WMI también devolverá procesos con nombres iguales de otros usuarios, a menos que escriba una consulta WQL más específica.

Si su proceso es un servicio y su secuencia de comandos se ejecuta en una cuenta privilegiada, es posible que aún deba tomar " la ruta regular " para detenerlo, por ejemplo, usando WScript.Shell para llamar a net stop o sc.exe , o, más elegantemente, usando el Win32_Service class:

Set Services = objWMIService.ExecQuery _
               ("SELECT * FROM Win32_Service WHERE Name = '" & ServiceName & "'")

For Each Service In Services
  Service.StopService()
  WSCript.Sleep 2000 ' wait for the service to terminate '
Next

Si mira en esta página: http: / /msdn.microsoft.com/en-us/library/aa393907(VS.85).aspx verá que el código de error 2 es el acceso denegado en lugar del archivo no encontrado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top