しばたテックブログスマートフォン用の表示で見るしばたテックブログPowerShellを中心に気分で書いている技術ブログです。前のエントリを書くにあたって調査していたら色々とわかったところがあったので補足として書いてみたいと思います。メソッドの内部動作について原則的にイベントログの出力にはメッセージリソースが必須になります。恥ずかしながら今回エントリを書くまでその事を知りませんでした。メソッドを使ってイベントログを出力する際には別段リソースを意識する必要がないので、どんな仕組みになっているのだろうと疑問に思い調べてみました。通常だと以下の様な感じでイベントログを出力することになると思います。"テストメッセージです");このコードは当然上手くいってイベントログが出力されるわけなんですが、リソースは一切出てきません。確認してみると以下の様になっています。見知らぬDLLが登録されています。Hackerで見てみるとこんな感じになっています。これ、左の数字がMessageIdで右がメッセージ内容になるんですけど、"%1"だけのメッセージが0から65535まで同じ様に定義されています。Framework側でダミーのメッセージリソースDLLを用意してくれていて、それを自動で使用する様になっていたんですね。これなら上記のコードでイベントログが出力できるはずです。リソースの種類について前回のエントリではメッセージリソースにDLLを使用しましたが、リソースはexeにも埋め込む事ができます。キーにDLLではなく実行ファイル自体を登録しているものもあったりします。このリソースはアンマネージドなリソースなんで、マネージドなC#のアプリには追加出来ないんだろうなぁと思っていたのですが、C#でもアンマネージドなリソースって追加できるんですね。コンパイラに/win32resオプションがあって、Win32リソースとしてアンマネージドなリソースを追加できます。Win32リソースの追加方法はDOBON.NETさんに詳しく記載されています。この方法でリソースをexeに埋め込めばDLL無しでもイベントログを出力することができます。Linuxを試すそろそろ試しておかないといけないかなと思ったので。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。