2010-12-17 3 views
0

asp.net 웹 양식 페이지에서 Console App (exe) 파일을 트리거해야합니다. 분명히 주요 문제는 사용 권한이며 현재 asp.net 서비스가 기본 관리자 계정을 가장하도록하여이 작업을 수행하려고합니다. 안정된 방식으로 작업하게되면 자체 사용자 및 권한을 설정하게됩니다. 지금 당장은이 일을 돕는 데 도움이 될 것입니다.콘솔 응용 프로그램이 ASP.NET Webform에서 시작된 후 손상 될 수 있습니다.

다음은 내가 가지고있는 것입니다.

웹 양식 코드.

Dim p As New Process() 
p.StartInfo.UseShellExecute = False 
p.StartInfo.FileName = locn & exeName 
p.StartInfo.CreateNoWindow = True 
p.StartInfo.Arguments = GetTaskID 
p.StartInfo.UserName = "adminuserid" 
p.StartInfo.Domain = "domain" 
Dim pw As New System.Security.SecureString 
For Each ch As Char In "adminuserpassword" 
    pw.AppendChar(ch) 
Next 
p.StartInfo.Password = pw 
p.StartInfo.WorkingDirectory = "directory" 
p.StartInfo.RedirectStandardError = True 
p.StartInfo.RedirectStandardOutput = True 
p.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Normal 
p.StartInfo.LoadUserProfile = True 
p.Start() 
p.WaitForExit() 

버튼 클릭 이벤트에서이 코드를 실행하면 서버의 프로세스 관리자에서 볼 수있는 EXE가 성공적으로 실행됩니다. 그러나 프로세스는 약 3 초 동안 만 실행 된 다음 닫힙니다.

응용 프로그램 오류 : 오류있는 응용 프로그램 BlueLimeConsoleApp.exe, 버전 1.0.0.0, 타임 스탬프 0x4d0ba5e2, Kernel32.dll 모듈을 오류있는 버전 6.0.6001.18000

이벤트 로그는 EXE 충돌/종료 다음은이 정보를 보여줍니다 , 타임 스탬프 0x4791a7a6, 예외 코드 0xc0000142, 오류 오프셋 0x00009cac, 프로세스 ID 0x10e8, 응용 프로그램 시작 시간 0x01cb9e14d0c53e0c.

시스템 이벤트 : 응용 프로그램 팝업 : BlueLimeConsoleApp.exe - 응용 프로그램 오류 : 응용 프로그램을 제대로 초기화하지 못했습니다 (0xc0000142). 확인을 클릭하여 응용 프로그램을 종료합니다.

그래서 EXE를 시작할 수있는 것처럼 보이지만 명백한 이유로 충돌합니다.

Module Module1 

    Sub Main(ByVal args As String()) 

     For i As Integer = 0 To 10000 
      Console.WriteLine("hello world") 
      System.Threading.Thread.Sleep(1000) 
     Next 

    End Sub 

End Module 

또한, 내가 테스트 목적으로 StandardError과 StandardOutput 메시지를 캡처하기 위해 노력하고있어, 둘 다 빈 값을 반환 :

EXE 파일의 코드입니다.

또한 EXE는 RDC를 통해 서버에서 직접 시작할 수 있으며 정상적으로 실행됩니다.

나는 거의 2 일 동안이 작업을하기 위해 시간을 낭비했으며,이 시점에서 나는이 직업에 대한 경험이 풍부한 사람들에게 필사적이다. 나는 해결책을 가지고있는 누구에게나 기쁜 선물로 50 달러를 기꺼이 던질 것입니다!

감사합니다, 나는 다음을 제외한 모든 것을 제거하면이 작업을 얻을 수 있었다 롭 Z에 토드

+0

또한 webform에서 CMD.exe를 시작하면 동일한 동작이 발생합니다. –

+0

로컬 컴퓨터 나 ASP.NET이 실행되는 서버에서이 작업을 수행하려고합니까? – rjzii

+0

ASP.NET VPS에서 ASP.NET 3.5 및 IIS7이 설치된 Windows 2008 Server를 실행하려고합니다. 컴퓨터에 대한 전체 관리자 권한이 있습니다. 이 모든 VS2008 내 로컬 컴퓨터에서 잘 작동합니다. –

답변

1

덕분에, 그것은 네트워크 서비스 사용자로 성공적으로 실행. 이제는 좀 더 안전한 사용자로 실행해야합니다.

p.StartInfo.UseShellExecute = False 
p.StartInfo.FileName = locn & exeName 
p.StartInfo.Arguments = GetTaskID 
p.Start() 
관련 문제