2010-12-17 24 views
0

asp.net webformsページからコンソールアプリケーション(exe)ファイルを起動する必要があります。明らかに主な問題はパーミッションであり、今のところ私はasp.netサービスがメインのAdministratorアカウントを偽装するようにすることでこれを実現しようとしています。私は安定した方法でそれを働かせることができたら、私はそれ自身のユーザーと権限を設定します。今のところ、私は本当にこれを稼働させるための支援に感謝します。コンソールWebアプリケーションから起動した後にアプリケーションがクラッシュする

ここに私のものがあります。

Webフォームコード。

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)。 OKをクリックしてアプリケーションを終了します。

私は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 3.5とIIS7でWindows 2008 Serverを実行している私のVPSでこれをしようとしています。私はマシン上で完全な管理権限を持っています。 VS2008のローカルマシンでは、これがすべて正常に動作します。 –

答えて

1

おかげで、それは、ネットワークサービスの利用者の下で正常に実行されました。今はより安全なユーザーで実行するだけです。

p.StartInfo.UseShellExecute = False 
p.StartInfo.FileName = locn & exeName 
p.StartInfo.Arguments = GetTaskID 
p.Start() 
関連する問題