private void Dispose(bool disposing) { if (_savedToken.Handle != IntPtr.Zero) { try {} finally { UnsafeNativeMethods.CloseHandle(_savedToken.Handle); _savedToken = new HandleRef(this, IntPtr.Zero); } } }
internal static bool IsImpersonating() { IntPtr token = GetCurrentToken(); if (token == IntPtr.Zero) { return(false); } UnsafeNativeMethods.CloseHandle(token); return(true); }
internal void Resume() { if (_token != IntPtr.Zero) { bool impersonationFailed = false; if (_revertSucceeded) { if (UnsafeNativeMethods.SetThreadToken(IntPtr.Zero, _token) == 0) { impersonationFailed = true; } } UnsafeNativeMethods.CloseHandle(_token); if (impersonationFailed) { throw new HttpException(HttpRuntime.FormatResourceString(SR.Cannot_impersonate)); } } }