Kev*_*ead 4 .net c# vb.net event-log
System.Diagnostics.EventLog类提供了与Windows事件日志交互的方法.我一直用它来进行简单的记录......
System.Diagnostics.EventLog.WriteEntry("MyEventSource", "My Special Message")
Run Code Online (Sandbox Code Playgroud)
有没有办法使用.NET在生成的事件日志条目中设置用户信息?
Toughie ......
我找了一种用.NET方法填充用户字段的方法.不幸的是,没有,你必须导入普通老式的Win32 API [ReportEvent功能(http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx)用DLLImportAttribute
您还必须重新声明函数用正确的类型,平台调用数据类型说
所以
BOOL ReportEvent(
__in HANDLE hEventLog,
__in WORD wType,
__in WORD wCategory,
__in DWORD dwEventID,
__in PSID lpUserSid,
__in WORD wNumStrings,
__in DWORD dwDataSize,
__in LPCTSTR *lpStrings,
__in LPVOID lpRawData
);
Run Code Online (Sandbox Code Playgroud)
变
[DllImport("Advapi32.dll", EntryPoint="ReportEventW", SetLastError=true,
CharSet=CharSet.Unicode)]
bool WriteEvent(
IntPtr hEventLog, //Where to find it ?
ushort wType,
ushort wCategory,
ulong dwEventID,
IntPtr lpUserSid, // We'll leave this struct alone, so just feed it a pointer
ushort wNumStrings,
ushort dwDataSize,
string[] lpStrings,
IntPtr lpRawData
);
Run Code Online (Sandbox Code Playgroud)
您还想查看[OpenEventLog](http://msdn.microsoft.com/en-us/library/aa363672 (VS.85) .aspx)和[ConvertStringSidToSid](http://msdn.microsoft.com/ EN-US /库/ aa376402(VS.85)的.aspx)
哦,你现在正在编写非托管代码...注意内存泄漏.祝你好运:p
| 归档时间: |
|
| 查看次数: |
4337 次 |
| 最近记录: |