1

C#/.NET アプリケーションから IIS を再起動する必要があります。これは些細な問題のように思えますが、これまでのところ成功しておらず、この質問の答えはどれもうまくいきませんでした.

私はマシンのローカル管理者です。

私はこれを試しました:

var process = new Process
{
   StartInfo =
   {
       Verb = "runas",
       WorkingDirectory = @"C:\Windows\System32\",
       FileName = @"issreset.exe"
   }
};
process.Start();

パス全体を に入れたり、使用したりWin32Exception - cannot find the file specified.するさまざまな組み合わせも試しましたが、これらのオプションはどちらも役に立ちませんでした。FileNameUseShellExecute

また、コマンドラインから呼び出してみました:

var process = new Process
{
   StartInfo =
   {
       Verb = "runas",
       WindowStyle = ProcessWindowStyle.Hidden,
       FileName = @"cmd.exe",
       Arguments = "/C iisreset"
   }
};
process.Start();

これは機能しますが、このアプリケーションはユーザーの介入なしで実行されるため、UAC プロンプトが表示されます。

他に試すことができるものはありますか?

4

5 に答える 5

4

ソリューション エクスプローラーでプロジェクト名を右クリック -> 追加 -> 新しい項目 -> アプリケーション マニフェスト ファイル。

その中で、

    <requestedPrivileges>
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
    </requestedPrivileges>

これで問題が解決するはずです。

于 2016-05-12T06:36:35.087 に答える
2

代わりに(そしてよりクリーンに)、ServiceControllerクラスを使用して、iis サービスを停止および開始することもできます。
ただし、おそらくまだ特権の昇格が必要になるでしょう...偽装によりこれが解決される場合があります。「より高い権限を持つアカウントになりすます。」サービスを再起動します。

Windows サービスを開始/停止 (および再起動) する方法の良い例は、ここにあります: Start, Stop and Restart Windows Service (C#)

于 2013-09-30T21:04:46.233 に答える
2

ファイル名が間違っています。試すFileName = @"iisreset.exe"

于 2014-12-23T16:44:35.193 に答える