0

UACが有効になっているマシンで実際の管理者として実行するようにASP.NETを(web.configまたはmachine.configを介して)構成できるかどうかを示す情報が見つからないようです。

つまり、管理者アカウントを偽装するように設定した場合でも、UAC は、管理者の役割を隠すトークン セットを返すことによって、そのアカウントが管理者として機能する機能を無効にします。IsInRole などのチェックでは、実行中のアカウントは実質的に管理者ではありません。

だから... 良いアドバイスをすべて無視して、Vista で管理者権限を使用して Web アプリを実行するとします。それは可能ですか?

代替案を歓迎します。(管理者権限が必要な主な理由: そのマシンで実行されているサービスを停止または開始するため。)

4

1 に答える 1

1

Core Reason の別の提案:

メッセージ キューまたは同様の概念を使用して、サービスに関する情報をシャトルし、異なるセキュリティ コンテキスト間を行き来して開始/停止します。ASP.NET でそれらをハードワイヤするのではありません。

例えば、

  1. ASP.NET の非管理者アカウントで、停止または開始するサービスに関する情報を含む値をファイルまたはレジストリ (ある種のログ) に書き込みます。

  2. 真の管理者として実行されているコントローラー サービスは、書き込まれたデータの場所をポーリングし、情報を確認すると、それらのコマンドに従って適切なサービスを開始および停止します。

セキュリティ ハックの代わりに、または UAC を完全に無効にする代わりに、回避策を使用して問題を回避します。

監視の更新:

  1. 上記と同じ考え方ですが、多少逆になっています。システムで実行されるこのシナリオのメイン/コントローラー サービスは、ログ ファイルに書き込みます。他のサービスについて書いているサービスです。
  2. Web ページに自動更新を配置します。Web ページが更新されるたびに、変更のログ (停止または開始されたサービスに関する情報) が監視されます (変更検出のために独自のスクラッチ ファイルを保持できます)。更新は、META Refresh タグ、またはサーバーへの AJAX コールバック (より微妙) である可能性があります。
  3. Web ページは以前と同様に指示を発行します。

問題は、そのメイン/コントローラー サービスが停止し、何も報告されない場合です (ログ/メッセージが渡されなくなります)。可能であれば、その 1 つのサービスに特別なケースを作成します。Windows が停止した場合は再起動するか、そのサービスを開始できない場合はマシンを再起動するように Windows に指示します...

.. ところで、Web ページ モニターを使用する代わりに、サービスを自動的に監視し、障害時にサービスを再起動する Windows ツールを検討しましたか、それとも要件に適していませんか?

于 2010-03-11T03:39:40.587 に答える