.Net Framework 4.7.2 を使用して Windows Server 2019 で ASP.NET アプリケーションをテストしています。IIS アプリケーションは、管理者権限を持たないユーザーを偽装するように設定されています。
アプリケーションはEventLog.SourceExists
、新しいソースを作成する前に、イベント ログ ソースが存在するかどうかを確認するために呼び出します。この方法では、ソースの既存のイベント ログを検索するために管理者権限が必要であることを理解しています [1]。これを実現するもう 1 つの方法は、ユーザーにレジストリ キーHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
とすべての子に対する読み取りアクセス許可を明示的に与えることです。
これは、Windows Server 2019 (2016、2012 R2、2018) より前のバージョンで機能します。
テストすると、この同じアプリケーションが Windows Server 2019 で失敗し、例外が発生します。
ソースは見つかりませんでしたが、一部またはすべてのイベント ログを検索できませんでした。アクセスできないログ: 状態。
procmon を実行しているときに、「状態」イベント ログのレジストリ キーを開こうとすると、アクセスが拒否されました。HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\State
"State" レジストリ キーは、Windows Server 2019 で新たに追加されました。これも保護されています。SYSTEM によって所有されており、管理者は読み取り専用に制限されています。ユーザーに読み取り権限を付与しようとすると、アクセスが拒否されます。その結果、管理者以外のユーザーとして実行しているアプリケーションは、Inaccessible logs: State
EventLog.SourceExists を呼び出すときに失敗します。
State
レジストリ キーの所有権を取得して、ユーザーを追加できることに気付きました。ただし、これを行う前に、Windows Server 2019 のこの新しいレジストリ キー (イベント ログ) について知っている人がいるかどうかを確認したいと思います。
ありがとう。