2012-03-14 21 views
0

私の.net Webアプリケーションでは、別のユーザーアカウント(より高い特権を持つアカウント)で新しいプロセスとして別のプログラムを起動する必要があります。私のコードはエラーなく実行されますが、決して出力がありません(出力のリダイレクトを試みました)、プログラムはまったく実行されていないようです。 User authの詳細に関するエラーではなく、私は偽のユーザー名を試しましたが、その場合は有効な例外がスローされます。イベントログに何も追加されません。.netから別のユーザーとして外部プログラム(プロセス)を起動する方法

SecureString passwordString = new SecureString(); 
foreach (char c in "MyPassword") 
{ 
    passwordString.AppendChar(c); 
} 

var process = new System.Diagnostics.Process 
{ 
    StartInfo = 
    { 
     UserName = "myuser", Password = passwordString, Domain = "MyDomain", 
     WorkingDirectory = HttpContext.Request.MapPath("~/bin"), 
     UseShellExecute = false, 
     FileName = HttpContext.Request.MapPath("~/bin") + "\\ServerCertificateImporter.exe", 
     Arguments = instanceLocationId.ToString(), 
     CreateNoWindow = true, 
     RedirectStandardInput = false, 
     RedirectStandardOutput = false, 
     RedirectStandardError = false 
    } 
}; 

process.Start(); 
process.WaitForExit(); 
process.Close(); 
+1

新しいバージョンのWindowsでは、2つのプロセス間で異なるレベルの権限を持つ通信がブロックされます... Webアプリケーションでこれをしないでください...セキュリティリスクを追加することによってのみ動作させることができます。 – Yahia

+0

これは勝つ7/win server 2008 ... –

+0

私が書いたことはあなたに起こっていることです - セキュリティモデルはVistaで始まるMSによって修正されて拡張されました... – Yahia

答えて

0

ヤヒアが指摘したように、これは私が別のユーザーアカウントを使用してプログラムを呼び出すようにしようとしていたという事実によって引き起こされた - と窓は私がそれをしたくありませんでした。

関連する問題