El acceso se deniega al ejecutar un trabajo por lotes en un equipo basado en Windows Server 2003

En este artículo se proporciona la solución a un error (se deniega el acceso) que se produce al ejecutar un trabajo por lotes en un equipo basado en Microsoft Windows Server 2003.

Se aplica a: Windows Server 2003
Número de KB original: 867466

Síntomas

Al ejecutar un trabajo por lotes que se ejecuta en el contexto de una cuenta de usuario normal, es posible que el script no se ejecute. Si ejecuta el trabajo por lotes mediante la característica Tareas programadas, es posible que el siguiente mensaje de error se registre en el archivo de registro De tareas programadas (Schedlgu.txt):

0x80070005: se deniega el acceso.

Si usa un programa del 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 se produce si se cumplen todas las condiciones siguientes:

  • El trabajo por lotes se ejecuta en un servidor miembro basado en 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 que no es miembro del grupo Administradores.

En Windows Server 2003, el grupo Usuarios no tiene permisos de lectura y ejecución para el procesador de comandos (Cmd.exe). De forma predeterminada, el programa de Cmd.exe tiene la siguiente configuración de permisos:

  • El grupo implícito interactivo y el grupo implícito servicio 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 batch también tiene permisos de lectura y ejecución.

  • El grupo Administradores y el grupo implícito Sistema tienen permisos de control total.

Para resolver este problema, use cualquiera de los métodos siguientes.

Resolución 1: Conceder permisos de lectura y ejecución Cmd.exe

Conceda al programa Cmd.exe permisos Read y Execute para la cuenta de usuario en la que se ejecuta el trabajo por lotes. Para ello, siga estos pasos:

  1. Haga clic en Inicioy, a continuación, haga clic en Explorador de Windows.

  2. Busque y haga clic con el botón derecho en el archivo Cmd.exe. El archivo Cmd.exe se encuentra 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 Escribir los nombres de objeto que se van a seleccionar , escriba el nombre de usuario en el que se ejecuta el trabajo por lotes y, a continuación, haga clic en Aceptar dos veces.

    Nota:

    Al agregar el usuario, se le conceden automáticamente permisos de lectura y ejecución.

  7. Haga clic en cuando se le pida que continúe.

Resolución 2: Conceder permisos de lectura y ejecución para Cmd.exe archivo al grupo de Batch

Conceda permisos de lectura y ejecución para el archivo Cmd.exe al grupo batch. Esto permite que todos los procesos por lotes ejecuten el procesador de comandos. Para ello, siga estos pasos:

  1. Haga clic en Inicioy, a continuación, haga clic en Explorador de Windows.
  2. Busque y haga clic con el botón derecho en el archivo Cmd.exe . El archivo Cmd.exe se encuentra 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 Escribir los nombres de objeto que se van a seleccionar , escriba Batch y, a continuación, haga clic en Aceptar dos veces.
  7. Haga clic en cuando se le pida que continúe.

Más información

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

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