public static bool DoWorkImpersonated(WorkImpersonatedDelegate StuffToDo) { // Call LogonUser to get a token for the user IntPtr _Token = IntPtr.Zero; string username = OMLSettings.ImpersonationUsername; string password = OMLSettings.ImpersonationPassword; bool loggedOn = LogonUser( username, System.Environment.UserDomainName, password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, ref _Token); if (!loggedOn) { throw new Win32Exception(Marshal.GetLastWin32Error()); } // Begin impersonating the user WindowsImpersonationContext impersonationContext = null; try { WindowsIdentity.Impersonate(_Token); StuffToDo(); } finally { // Clean up CloseHandle(_Token); if (impersonationContext != null) { impersonationContext.Undo(); } } return(false); }
public static bool DoWorkImpersonated(WorkImpersonatedDelegate StuffToDo) { // Call LogonUser to get a token for the user IntPtr _Token = IntPtr.Zero; string username = OMLSettings.ImpersonationUsername; string password = OMLSettings.ImpersonationPassword; bool loggedOn = LogonUser( username, System.Environment.UserDomainName, password, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, ref _Token); if (!loggedOn) throw new Win32Exception(Marshal.GetLastWin32Error()); // Begin impersonating the user WindowsImpersonationContext impersonationContext = null; try { WindowsIdentity.Impersonate(_Token); StuffToDo(); } finally { // Clean up CloseHandle(_Token); if (impersonationContext != null) impersonationContext.Undo(); } return false; }