9

VBスクリプトを実行するためのバッチファイルがあります。ダブルクリックでバッチファイルを実行している間は機能しますが、C#で同じことをローカル環境で実行したが、ステージングサーバー(Windows Server 2008r2)では機能しなかった場合、この実行に適用する必要のあるアクセス許可レベルはありますか? 。ステージングサーバーから、ダブルクリックしてバッチファイルを実行できます...

管理者アカウントでサーバーにログインし、アプリケーションをlocalhostとして参照しました。

C#からのバッチファイルの実行で欠けているものはありますか?

私のC#コードはローカル環境で正常に機能しているので、問題はないと思います。とにかく、次は私のC#コードです。

if (File.Exists(FileName*))
            {
                System.Diagnostics.ProcessStartInfo p = new System.Diagnostics.ProcessStartInfo(FileName);
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = FileName;
                proc.StartInfo.RedirectStandardError = true;
                proc.StartInfo.RedirectStandardOutput = true;
                proc.StartInfo.UseShellExecute = false;

                proc.Start();

                proc.WaitForExit();

            }
            else
            {
                lblMsg.Text = "Sorry unable to process you request";
            }

* FileNameはバッチファイルへのパスです。また、バッチファイルとvbsファイルの両方を含むフォルダーに完全なアクセス許可を設定しました。

4

2 に答える 2

4

これを機能させるには、バッチファイルにアクセスできるユーザーとしてアプリプールを実行する必要があります。IIS7またはIIS6のアプリプールIDを変更する方法を確認してください。

于 2012-05-02T09:11:25.310 に答える
2

Kartheekが言ったことを拡張するには:

  • IIS 7では、アプリケーションプールはアプリプールアカウントとして実行され、IISAPPPOOL\AppPoolName
  • IIS 6では、アプリケーションプールは次のように実行されます。Network Service
  • いずれの場合も、これらのアカウントはユーザーのドキュメントフォルダーにアクセスできず、(デフォルトでは)一般的なデータストアからのみ読み取ることができます。

通常、アプリプールアカウントはデータの分離に役立つため、保持する必要があります。そのため、アプリプールアカウントに必要なbatファイルに対して読み取りと実行のアクセス許可を付与するだけです。また、バットが読み取り/書き込みする必要のあるフィル/フォルダーに対する適切な権限も必要です。

この問題を修正するためにアプリで何も変更する必要はありません。ただし、IISアプリで、実際にWebサイトにアクセスしているユーザーになりすます必要がある場合を除きます(何らかの認証を使用する場合にのみ実際に機能します)。とにかく悪い考えです-ですから、権限を調整するのが最善です。

一般的な経験則として、Webサーバーで作業するときは、アクセス許可/実行レベルを可能な限り低く/制限的に維持する必要があります。

于 2012-05-02T23:38:25.077 に答える