5

「Process」クラスmvc4を介した.exeファイルへの呼び出しにAPIがあります。 この .exe はlog4netを使用し、ファイルをディレクトリとサブディレクトリにエクスポートする別の .exe を実行します。プロセスの最後に、.exe が http API に投稿されます。

Process p = new Process();
p.StartInfo.FileName = ConfigurationManager.AppSettings["ExtractToolPath"];
p.StartInfo.Arguments = this.strcommand;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.Verb = "runas";
p.StartInfo.RedirectStandardInput = true;
p.Start();
string s = p.StandardOutput.ReadToEnd();
p.WaitForExit();

文字列's'は "" (空白文字列) で返されます。

sパラメータは、コンソール ウィンドウに出力されたものを取得します。そして、.exeの最初に印刷を行ったので、プロセスが開始されていないことさえわかっています。

重要: log4net ロガーを削除すると、's'パラメーターが出力されますが、書き込み権限を必要とするコマンドを実行しようとすると失敗します。

IIS に実行権限を与え、管理者のユーザー名とパスワードで偽装しようとしました。ディレクトリを全員に「共有」しました。何も助けませんでした。

4

2 に答える 2

9

アプリケーションプールIDを管理者に設定してみましたか?または、ディレクトリへの書き込み権限をアプリケーションプールIDに付与しますか?

書き込みに使用されるクレデンシャルは、アプリケーションプールIDのクレデンシャルです。

于 2013-01-15T08:08:04.350 に答える