S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

イベントログを書き込む権限

Windows Server 2008Windows 7では、ある権限がないとイベントログが書き込めない。
グループにAdministratorsを設定しているユーザーでも書き込めない。

参考

Windows7にもwevtutilコマンドがあるようなので、同じ方法で解決できるものと思われる。
Windows Server 2008 イベント ログに対するセキュリティ アクセス許可の変更について - Ask CORE - Site Home - TechNet Blogs
下記を見ると2003でもってことで、多分Vistaも同じなんだろう。
Windows Server 2003 のイベント ログのセキュリティをローカルまたはグループ ポリシーで設定する方法

SDDL

SDDLってなんだよ?ってことで。
セキュリティ設定を記述するSDDL文字列とは? − @IT
そうするとSIDは?とか。
@IT:Windows TIPS -- Knowledge:オブジェクトを識別するSIDとは?
で、これでwevtutilコマンドで確認すると「(A;;0x7;;;BA)」ってのがあるから、
A=アクセス許可
0x7=読み取り/書き込み/消去
BA=ビルトイン(Built-in) Administrators
で、グループにAdministratorsを設定しているユーザーはOKなんかと思ったけど、ここの「BA」ってAdministratorのことなのか???

多分同じ事象

Vistaでってことだけど、きっと同じ。
書き込めるけど、最初のソースを作成するEventLog.CreateEventSourceメソッドで引っかかってる。
Vista 上の EventLog への出力に嵌る | tk-engineering.com Technical blog
C#だとこんな感じか。

using System.Diagnostics;
…
EventLogPermission perm = New EventLogPermission(EventLogPermissionAccess.Administer, ".");
perm .PermitOnly();
EventLog.WriteEntry(sourceName, message, type, id);

追記(2011/04/21)

EventLogPermissionの設定により、今度はSystem.Environment.GetFolderPathメソッドでSystem.Security.SecurityExceptionが発生してみたり。
なので、ユーザーAdministratorでEventLog.CreateEventSourceメソッドでイベントログのソースを作成しておくという対応としてみる。