toughie ...
Je cherchais un moyen de remplir le champ de l'utilisateur avec une méthode .NET. Malheureusement, il n'y en a pas, et vous devez importer la plaine ancienne API Win32 [fonction ReportEvent] (http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx) avec un DLLImportAttribute
Vous devez également redéclarer la fonction avec les bons types, comme Platform Invoke Data Types dit
Alors
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
);
devient
[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
);
Vous voulez aussi regarder [OpenEventLog] (http://msdn.microsoft.com/en-us/library/aa363672(VS.85).aspx) et [ConvertStringSidToSid] (http://msdn.microsoft.com/en-us/library/aa376402(VS.85).aspx)
Oh, et vous écrivez du code non managé maintenant ... Méfiez-vous la chance de leaks.Good mémoire: p