2012-05-02 23 views
8

Tengo un archivo por lotes para ejecutar un script VB. Mientras ejecute el archivo por lotes haciendo doble clic, funcionará, pero cuando he hecho lo mismo con C# está trabajando en mi entorno local pero no en el servidor intermedio (windows server 2008r2), ¿hay algún nivel de permiso que necesite para esta ejecución? . Desde el servidor intermedio, puedo hacer doble clic y ejecutar el archivo por lotes ...Ejecutar archivo por lotes desde C# Número de permiso

He iniciado sesión en el servidor con la cuenta de administrador y he examinado la aplicación como localhost.

¿Hay algo que me falta en la ejecución del archivo por lotes desde C#,

No creo que haya ningún problema con mi código C# como su trabajo bien en mi entorno local, de todos modos sigue es mi código C#,

if (File.Exists(FileName*)) 
      { 
       System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo(FileName); 
       System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
       proc.StartInfo.FileName = FileName; 
       proc.StartInfo.RedirectStandardError = true; 
       proc.StartInfo.RedirectStandardOutput = true; 
       proc.StartInfo.UseShellExecute = false; 

       proc.Start(); 

       proc.WaitForExit(); 

      } 
      else 
      { 
       lblMsg.Text = "Sorry unable to process you request"; 
      } 

* Nombre de archivo es la ruta de acceso a archivo por lotes. También he establecido un permiso completo para las carpetas que contienen los archivos batch y vbs.

+0

Creo que tiene que especificar que el usuario en IIS para su grupo de aplicaciones tenga permiso en el directorio de trabajo del script por lotes – Habib

Respuesta

3

Para que esto funcione, su grupo de aplicaciones debe ejecutarse como un usuario que tiene acceso al archivo por lotes. Compruebe cómo cambiar la identidad de su grupo de aplicaciones para IIS 7 o IIS 6.

+0

Gracias Kartheek por su respuesta, he estado usando la cuenta de administrador para acceder al servidor y estoy accediendo al sitio web como http: // localhost /. He configurado la identidad del grupo de aplicaciones en el modo custome y configuré esta cuenta de administrador y passowrd pero aún no funciona, y estoy usando IIS7 – sudheshna

2

Para ampliar lo que dijo Kartheek:

  • en IIS piscinas 7 aplicación se ejecute como una cuenta del grupo de aplicaciones, IISAPPPOOL\AppPoolName
  • en IIS piscinas 6 aplicaciones se ejecutan como Network Service
  • En cualquiera de los casos, estas cuentas no tiene acceso a la carpeta de documentos del usuario y (de forma predeterminada) solo puede leer de los almacenes de datos comunes.

Por lo general, desea mantener la cuenta del grupo de aplicaciones porque ayuda a segregar los datos, por lo que lo único que haría es garantizar permisos de lectura y ejecución en el archivo bat que necesita para la cuenta del grupo de aplicaciones. También necesitarás los permisos adecuados en cualquier archivo/carpeta del que el murciélago necesite leer/escribir.

No necesita cambiar nada en su aplicación para corregir este problema, a menos que desee que la aplicación IIS se disfrace como el usuario que está realmente sentado en el sitio web (realmente funciona si usa alguna forma de autenticación .) En general, esta es una mala idea de todos modos, por lo que es mejor ajustar los permisos.

Como regla general, al trabajar en un servidor web, desea mantener los permisos/niveles de ejecución lo más bajos/restrictivos posible.

+0

Gracias a debracey por su respuesta, estoy seguro de que este es el problema, pero no sé cómo ordenarlo de cualquier forma estoy intentando esto. – sudheshna

+0

Simplemente está manipulando los permisos de la misma manera que lo haría con cualquier otro archivo en Windows Server, busque "cambiar los permisos NTFS [versión del servidor]" – debracey

Cuestiones relacionadas