2012-05-02 18 views
8

Mam plik wsadowy do wykonania skryptu VB. Podczas wykonywania pliku wsadowego przez podwójne kliknięcie będzie działać, Ale gdy zrobiłem to samo z C# jego pracy na moim środowisku lokalnym, ale nie na serwerze pomostowym (Windows Server 2008r2), Czy istnieje poziom uprawnień muszę ubiegać się o to wykonanie . Z serwera pomostowego mogę dwukrotnie kliknąć i wykonać plik wsadowy ...Wykonywanie pliku wsadowego z C# Permission issue

Zalogowałem się na serwerze z kontem administratora i przeglądałem aplikację jako localhost.

Czy coś mi brakuje na wykonanie pliku wsadowego z C#,

Nie sądzę, nie ma żadnego problemu z moim kodu C# jak jego pracy grzywny na moim lokalnym środowisku, w każdym razie Oto mój kod 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"; 
      } 

* FileName jest ścieżką do pliku wsadowego. Ponadto ustawiłem pełne uprawnienia do folderów zawierających pliki wsadowe i pliki vbs.

+0

Wierzę, że musisz określić użytkownika w IIS, aby pula aplikacji miała uprawnienia do katalogu roboczego skryptu wsadowego. – Habib

Odpowiedz

3

Aby to działało, pula aplikacji musi być uruchamiana jako użytkownik mający dostęp do pliku wsadowego. Sprawdź, jak zmienić tożsamość puli aplikacji na IIS 7 lub IIS 6.

+0

Dziękuję Kartheek za odpowiedź. Używam konta administratora, aby uzyskać dostęp do serwera i mam dostęp do strona internetowa jako http: // localhost /. Ustawiłem tożsamość puli aplikacji na tryb custome i ustawiłem to konto administratora i passowrd, ale nadal nie działa, a ja używam IIS7 – sudheshna

2

Aby rozwinąć na co Kartheek powiedział:

  • w IIS basenów 7 aplikacji uruchamianych jako konto puli aplikacji, IISAPPPOOL\AppPoolName
  • w IIS basenów 6 aplikacji uruchamianych jako Network Service
  • W każdym razie te rachunki nie mają dostępu do folderu dokumentów użytkownika i (domyślnie) mogą czytać tylko ze wspólnych magazynów danych.

Ogólnie rzecz biorąc, chcesz zachować konto puli aplikacji, ponieważ pomaga ono w segregacji danych - wystarczy, że przydzielisz uprawnienia do odczytu i wykonywania dla pliku bat, którego potrzebujesz do konta puli aplikacji. Będziesz także potrzebować odpowiednich uprawnień do wszelkich wypełnień/folderów, z których nietoperz musi odczytać/zapisać.

Nie musisz niczego zmieniać w swojej aplikacji, aby rozwiązać ten problem, chyba że chcesz, aby aplikacja IIS maskowała się jako użytkownik, który aktualnie siedzi na stronie (działa to naprawdę tylko w przypadku korzystania z jakiejś formy uwierzytelniania .) Generalnie jest to zły pomysł - więc najlepiej jest po prostu dostosować uprawnienia.

Ogólną zasadą jest, że podczas pracy na serwerze internetowym należy utrzymywać poziomy uprawnień/realizacji jako możliwie najniższe/restrykcyjne.

+0

Dziękuję za odpowiedź na pytanie, jestem pewien, że to jest problem, ale nie wiem jak to posortować w żaden sposób próbuję tego. – sudheshna

+0

Po prostu manipuluje uprawnieniami w taki sam sposób, jak w przypadku dowolnego innego pliku w systemie Windows Server, szukając "zmiany uprawnień NTFS [wersja serwera]" – debracey

Powiązane problemy