private static void AdjustToken() { using (Process process = Process.GetCurrentProcess()) { SafeTokenHandle hToken = SafeTokenHandle.InvalidHandle; try { if (!NativeMethods.OpenProcessToken(process.Handle, TokenAccessLevels.AdjustPrivileges, ref hToken)) { throw PscxException.LastWin32Exception(); } TokenPrivilegeCollection privileges = new TokenPrivilegeCollection(); privileges.Enable(TokenPrivilege.Backup); privileges.Enable(TokenPrivilege.Restore); Utils.AdjustTokenPrivileges(hToken, privileges); } finally { hToken.Dispose(); } } }
public static void AdjustTokenPrivileges(SafeTokenHandle hToken, TokenPrivilegeCollection privileges) { byte[] buffer = privileges.ToTOKEN_PRIVILEGES(); if (!NativeMethods.AdjustTokenPrivileges(hToken, false, buffer, buffer.Length, IntPtr.Zero, IntPtr.Zero)) { throw PscxException.LastWin32Exception(); } }
private static void AdjustToken() { using (Process process = Process.GetCurrentProcess()) { SafeTokenHandle hToken = SafeTokenHandle.InvalidHandle; try { if (!NativeMethods.OpenProcessToken(process.Handle, TokenAccessLevels.AdjustPrivileges, ref hToken)) { throw PscxException.LastWin32Exception(); } TokenPrivilegeCollection privileges = new TokenPrivilegeCollection(); privileges.Enable(TokenPrivilege.Backup); privileges.Enable(TokenPrivilege.Restore); Utils.AdjustTokenPrivileges(hToken, privileges); } finally { hToken.Dispose(); } } }