web-dev-qa-db-ja.com

ASP.netからサーバーで* .exeを実行する必要がある

現在の状況では、リモートサーバーでIIS ASP.net/C# APIをホストしている)exe(ローカル.txtファイルを作成)を実行する必要があります。ローカルユーザーを作成しました(たとえばuserA)リモートサーバーでWebサービスを実行する管理者として.txtファイルは作成されませんでした。userAに必要なフォルダーアクセス許可を既にチェックして付与し、さまざまなグループにユーザーを追加しています。面白いのは、ログインしている場合リモートシステムのuserAとして、exeは期待どおりに実行されます。ログアウトすると失敗します。サーバーは、Windowsサーバー2008 IIS 7.です。

更新:私は問題を解決し、回答と関連する問題へのいくつかのリンクをここに掲載しました。つまり、IISアプリプールで 'ユーザープロファイルの読み込み'をtrueに設定する必要がありました。

みんなの貢献に感謝します

16
santhosh.v

更新:私は何週間も後に問題を解決することができました。皆さんの貢献に感謝します。どうやらIISは、デフォルトではWindowsユーザープロファイルをロードしません。そのため、ログオンしていない別のユーザーとして実行する場合は、IISがWindowsプロファイルをロードする必要があります。アプリプールの詳細設定メニューで、「load windows profile」というオプションがあります。これをtrueに変更しただけです。以前のバージョンのIISでは、これはデフォルトで「true」に設定されていました。

SOに関する同じ質問の関連質問:

1) ASP.NETのセキュリティ例外とIIS 7.5 のユーザープロファイルの読み込みオプション)==

2) IIS7でasp.net Webアプリケーションプロジェクトを実行すると例外がスローされます

3) System.Web.AspNetHostingPermission Exception on New Deployment

別の4) http://geekswithblogs.net/ProjectLawson/archive/2009/05/05/iis-system.web.aspnethostingpermission-exception-on-windows-7-rc.aspx

12
santhosh.v

Process.Startを使用できます

Process process = new Process();
process.StartInfo.FileName = "CVS.exe";
process.StartInfo.Arguments = "if any";
process.Start();

Asp.netの別のユーザーとしてのプロセスの実行に関する投稿もあります。

http://weblogs.asp.net/hernandl/archive/2005/12/02/startprocessasuser.aspx

ユーザー資格情報の提供

つまり、次のようなコードを使用してプロセスをリダイレクトする必要があるということです。

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");

info.UseShellExecute = false;

info.RedirectStandardInput = true;

info.RedirectStandardError = true;

info.RedirectStandardOutput = true;

info.UserName = dialog.User; // see the link mentioned at the top

info.Password = dialog.Password;

using (Process install = Process.Start(info))

{

      string output = install.StandardOutput.ReadToEnd();

      install.WaitForExit();

      // Do something with you output data

      Console.WriteLine(output);

}
7
user1182183