public EventLogSession(string server, string domain, string user, SecureString password, SessionAuthentication logOnType) { if (server == null) server = "localhost"; _syncObject = new object(); _server = server; _domain = domain; _user = user; _logOnType = logOnType; UnsafeNativeMethods.EvtRpcLogin erLogin = new UnsafeNativeMethods.EvtRpcLogin(); erLogin.Server = _server; erLogin.User = _user; erLogin.Domain = _domain; erLogin.Flags = (int)_logOnType; erLogin.Password = CoTaskMemUnicodeSafeHandle.Zero; try { if (password != null) erLogin.Password.SetMemory(SecureStringMarshal.SecureStringToCoTaskMemUnicode(password)); //open a session using the erLogin structure. _handle = NativeWrapper.EvtOpenSession(UnsafeNativeMethods.EvtLoginClass.EvtRpcLogin, ref erLogin, 0, 0); } finally { erLogin.Password.Dispose(); } }
public EventLogSession(string server, string domain, string user, SecureString password, SessionAuthentication logOnType) { this.renderContextHandleSystem = EventLogHandle.Zero; this.renderContextHandleUser = EventLogHandle.Zero; this.handle = EventLogHandle.Zero; EventLogPermissionHolder.GetEventLogPermission().Demand(); if (server == null) { server = "localhost"; } this.syncObject = new object(); this.server = server; this.domain = domain; this.user = user; this.logOnType = logOnType; UnsafeNativeMethods.EvtRpcLogin login = new UnsafeNativeMethods.EvtRpcLogin(); login.Server = this.server; login.User = this.user; login.Domain = this.domain; login.Flags = (int)this.logOnType; login.Password = CoTaskMemUnicodeSafeHandle.Zero; try { if (password != null) { login.Password.SetMemory(Marshal.SecureStringToCoTaskMemUnicode(password)); } this.handle = NativeWrapper.EvtOpenSession(UnsafeNativeMethods.EvtLoginClass.EvtRpcLogin, ref login, 0, 0); } finally { login.Password.Close(); } }