Windows Vista から Event Log が新しくなりました。MSDN Library では旧来の Event Log は Event Logging で説明されていますが、Windows Vista 以降の reference はWindows Event Log になります。
Windows Event Log になり、旧来の Event Log といろいろ変わっていますが、大きな変更点の一つに Channel の導入があげられるでしょう。
Windows Event Log の実体は下記に格納された拡張子 "evtx" の file です。
"%SYSTEMROOT%System32\winevt\Logs"
上記を参照してみると旧来からおなじみの "Application", "System", "Security" に加え大量の log file があることがわかりますね。
調査してみてわかったのですが、これそれぞれに異なる ACL を設定可能です。
Windows Server 2003 より前からも内部では ACL は存在していましたが、編集できませんでした。編集できるようになったのは Windows Server 2003 からです。
HKLM\System\CurrentControlSet\Services\Eventlog\%EventlogName%\CustomSD
上記 entry に ACL を SDDL で設定することにより変更できます。Windows Server 2003 では上記 entry が default で存在するので格納されている SDDL を読むことでわかりました。
ところが、Windows Vista では実は上記 entry が存在しません。したがって、Windows Server 2003 と違い default の ACL がよくわかりません。また、この ACL を説明している資料を探しましたが、存在しないようです。
ただ、引き続き "CustomSD" entry は有効なようで、適当な SDDL を指定した場合その ACL に置き換えられていることが確認できました。
ところで、Windows Vista 以降で新たに加わった多くの log が下記 registry entry 配下に存在しません。
"HKLM\System\CurrentControlSet\Services\Eventlog"
さてどこで設定されているんでしょうね?答えは下記です。
"HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels"
上記 registry key 配下の subkey が対象 channel の設定が格納されている場所です。で、ACL は "ChannelAccess" entry に SDDL で記述されています。当然この値を変更することで任意の ACL に変更することが可能です。