Mensaje de error "Acceso denegado" cuando ejecuta un trabajo por lotes en un equipo con Windows Server 2003


Síntomas


Cuando realiza un trabajo por lotes que se ejecuta en el contexto de una cuenta de usuario regular en un equipo con Microsoft Windows Server 2003, no se puede ejecutar la secuencia de comandos. Si ejecuta el trabajo por lotes mediante la función Trabajos programados, podría registrarse el siguiente mensaje de error en el archivo de registro de Trabajos programados (Schedlgu.txt):
0x80070005: Acceso denegado.
Si utiliza un programa depurador para intentar determinar por qué el trabajo por lotes no funciona, puede aparecer el siguiente mensaje de error en la salida de depuración:
Acceso denegado (Error 5)

Causa


Este problema sucede si se dan todas las condiciones siguientes:
  • Ejecuta el trabajo por lotes en un servidor miembro con Windows Server 2003.
  • El trabajo por lotes se ejecuta como un proceso no interactivo.
  • El trabajo por lotes está configurado para ejecutarse en el contexto de una cuenta ajena al grupo Administradores.
En Windows Server 2003, el grupo Usuarios no tiene permisos de lectura y ejecución en el procesador de comandos (Cmd.exe). De forma predeterminada, el programa Cmd.exe tiene la siguiente configuración de permisos:
  • Los grupos implícitos Interactive y Service tienen permisos de lectura y ejecución.

    Nota: en un servidor miembro, el grupo TelnetClients también tiene permisos de lectura y ejecución. En un controlador de dominio, el grupo implícito Lote también tiene permisos de lectura y ejecución.
  • El grupo Administradores y el grupo implícito Sistema tienen permisos de control completo.

Solución


Para resolver este problema, utilice uno de los métodos siguientes:

Método 1

Conceda al programa Cmd.exe permisos de lectura y ejecución para la cuenta de usuario bajo la cual se ejecuta el trabajo por lotes. Para ello, siga estos pasos:
  1. Haga clic en Inicio y, a continuación, en Explorador de Windows.
  2. Busque el archivo Cmd.exe y haga clic en él con el botón secundario del mouse. El archivo Cmd.exe está en la carpeta %windir%\System32.
  3. Haga clic en Propiedades.
  4. Haga clic en la pestaña Seguridad.
  5. Haga clic en Agregar.
  6. En el cuadro Escriba los nombres de objeto que desea seleccionar, escriba el nombre del usuario bajo el cual se ejecuta el trabajo por lotes y, a continuación, haga clic en Aceptar dos veces.

    Nota: cuando agrega al usuario, este recibe automáticamente permisos de lectura y ejecución.
  7. Haga clic en cuando se le pregunte si desea continuar.

Método 2

Conceda al grupo Lote permisos de lectura y ejecución para el archivo Cmd.exe. Esto permite a todos los procesos por lotes ejecutar el procesador de comandos. Para ello, siga estos pasos:
  1. Haga clic en Inicio y, a continuación, en Explorador de Windows.
  2. Busque el archivo Cmd.exe y haga clic en él con el botón secundario del mouse. El archivo Cmd.exe está en la carpeta %windir%\System32.
  3. Haga clic en Propiedades.
  4. Haga clic en la pestaña Seguridad.
  5. Haga clic en Agregar.
  6. En el cuadro Escriba los nombres de objeto que desea seleccionar, escriba Lote y, a continuación, haga clic en Aceptar dos veces.
  7. Haga clic en cuando se le pregunte si desea continuar.

Más información


El comportamiento que se describe en este artículo es distinto del comportamiento predeterminado de Microsoft Windows 2000 Server. De forma predeterminada, Windows 2000 Server concede permisos de lectura y ejecución al grupo Usuarios.

Para obtener más información acerca de los grupos implícitos, visite los siguientes sitios Web de Microsoft: