IIS バージョン 6.1 SP1 を搭載した Windows Server 2008 R2 64 ビットで .bat ファイルを実行しようとしています。私のローカル マシンではすべてがうまくいきますが、サーバーでは作成されるプロセス (cms.exe *32) を除いて何も起こりません。
私の検索によると、主な問題は権限です。セキュリティ上の理由から、IIS が既定でバッチ ファイルへのアクセスをブロックしているといくつかの場所で読みました。私は問題を理解していますが、私の場合、セキュリティ上の問題はないので、ファイルを実行したいと思います。
私が見つけたソリューションは、偽装を実装することで合格しました。つまり、次のことを意味します。
web.config を変更 -> identity impersonate="true"
IIS サイト認証を変更 -> ASP.NET の偽装を有効にする
ファイルとフォルダにアクセス許可を与える
ステップ1の別のバージョンを試しても-> identity impersonate="true" userName=************
IIS ユーザーに権限を付与します。
- サービスが IIS 管理サービスのデスクトップと対話できるように設定する
バッチを呼び出すには、C# で次のコードを使用します。
private void StartPervasive(string npu)
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo(ConfigurationManager.AppSettings.Get("PervasivePath"));
//startInfo.UseShellExecute = true;
//startInfo.WorkingDirectory = ConfigurationManager.AppSettings.Get("PervasiveWorkingPath");
//startInfo.WindowStyle = ProcessWindowStyle.Normal;
//startInfo.RedirectStandardInput = true;
//startInfo.RedirectStandardError = true;
//startInfo.RedirectStandardOutput = true;
//startInfo.FileName = ConfigurationManager.AppSettings.Get("PervasivePath");
startInfo.Arguments = npu;
Process myProcess = Process.Start(startInfo);
//StreamReader sr = File.OpenText(ConfigurationManager.AppSettings.Get("PervasivePath"));
//StreamWriter sw = myProcess.StandardInput;
//while (sr.Peek() != -1)
//{
// string readed = sr.ReadLine();
// readed = readed.Replace("%1", npu);
// sw.WriteLine(readed + Environment.NewLine);
//}
//myProcess.WaitForExit();
//myProcess.Close();
}
catch (Exception ex)
{
throw ex;
}
}
また、.exe ファイルを含む他のファイルを実行しようとしましたが、結果が得られなかったことにも注意してください。
説明されている手順に対するアドバイス、ヘルプ、または修正をいただければ幸いです。