Pregunta

¿Alguien sabe qué privilegios de usuario se necesitan para que el siguiente código se ejecute correctamente como una tarea programada en Windows Server 2003?

System.Diagnostics.Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)

Cuando NO se ejecuta como tarea programada, es decir, bajo un usuario que ha iniciado sesión, siempre que el usuario sea miembro de " Usuarios del Monitor de rendimiento " ;, este código no generará una excepción.

Cuando se ejecuta como una tarea programada en la misma cuenta de usuario, falla.

La única forma en que puedo hacer que funcione es ejecutarlo como miembro del grupo de administradores locales.

¿Alguna idea?

¿Fue útil?

Solución

Mis más humildes disculpas. El usuario que estaba usando NO era miembro de " Usuarios del Monitor de rendimiento " grupo.

Esto es necesario para la implementación de .NET Framework 1.1 de System.Diagnostics.

He agregado el usuario a este grupo y todo está bien.

Otros consejos

¿Qué asignaciones de derechos de usuario le han dado a la cuenta que se está ejecutando como una tarea programada? Deberá proporcionar la cuenta en cuestión 'Iniciar sesión como un trabajo por lotes' en la configuración de seguridad local.

Actualizar: ¿Su aplicación escribe en algún archivo y, si es así, el usuario de la tarea programada tiene suficientes derechos?

Acabo de encontrar una aplicación de prueba que escribe los nombres de proceso de la matriz Process [] devuelta por Process.GetProcessesByName (Process.GetCurrentProcess (). ProcessName) en un archivo y funciona bien como una tarea programada ... incluso ejecutándose bajo la identidad de un usuario que es solo un miembro del grupo de Usuarios (ni siquiera un miembro de 'Usuarios del Monitor de rendimiento'.

La carpeta en la que escribe tiene asignados los derechos de modificación al SISTEMA, a los Administradores y al usuario de la tarea programada.

¿Alguna posibilidad de pegar su código o al menos un fragmento lo suficientemente pequeño que demuestre que el exe falla como una tarea programada para que podamos ayudar a diagnosticar el problema?

Saludos
Kev

Un problema que he visto al leer el nombre del proceso es que el acceso a los contadores de rendimiento puede deshabilitarse.

Abre tu registro y ve si esta clave está ahí: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ PerfProc \ Performance] " Deshabilitar contadores de rendimiento " = dword: 00000001

Puedes establecerlo en cero o eliminarlo.

Tomado de MSDN :

  

Permisos LinkDemand - por completo   confianza para el llamante inmediato. Esta   miembro no puede ser utilizado por parcialmente   código de confianza.

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