public static bool SetPrivileges() { IntPtr hProc, hToken; long luid_TakeOwnership, luid_Restore; Imports.TOKEN_PRIVILEGES tp = new Imports.TOKEN_PRIVILEGES(); hProc = Process.GetCurrentProcess().Handle; hToken = IntPtr.Zero; if (!Imports.OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref hToken)) return false; luid_TakeOwnership = 0; if (!Imports.LookupPrivilegeValue(null, SE_TAKE_OWNERSHIP_NAME, ref luid_TakeOwnership)) return false; luid_Restore = 0; if (!Imports.LookupPrivilegeValue(null, SE_RESTORE_NAME, ref luid_Restore)) return false; tp.PrivilegeCount = 2; tp.Privilege1.Luid = luid_TakeOwnership; tp.Privilege1.Attributes = SE_PRIVILEGE_ENABLED; tp.Privilege2.Luid = luid_Restore; tp.Privilege2.Attributes = SE_PRIVILEGE_ENABLED; if (!Imports.AdjustTokenPrivileges(hToken, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero)) return false; return true; }
public static bool SetPrivileges() { IntPtr hProc, hToken; long luid_TakeOwnership, luid_Restore; Imports.TOKEN_PRIVILEGES tp = new Imports.TOKEN_PRIVILEGES(); hProc = Process.GetCurrentProcess().Handle; hToken = IntPtr.Zero; if (!Imports.OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref hToken)) { return(false); } luid_TakeOwnership = 0; if (!Imports.LookupPrivilegeValue(null, SE_TAKE_OWNERSHIP_NAME, ref luid_TakeOwnership)) { return(false); } luid_Restore = 0; if (!Imports.LookupPrivilegeValue(null, SE_RESTORE_NAME, ref luid_Restore)) { return(false); } tp.PrivilegeCount = 2; tp.Privilege1.Luid = luid_TakeOwnership; tp.Privilege1.Attributes = SE_PRIVILEGE_ENABLED; tp.Privilege2.Luid = luid_Restore; tp.Privilege2.Attributes = SE_PRIVILEGE_ENABLED; if (!Imports.AdjustTokenPrivileges(hToken, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero)) { return(false); } return(true); }