public static bool EnablePrivilege(string privilege) { try { int token = 0; int retVal = 0; var tp = new TOKEN_PRIVILEGE(); var ld = new LUID(); retVal = OpenProcessToken(GetCurrentProcess(), TokenAdjustPrivileges | TokenQuery, ref token); retVal = LookupPrivilegeValue(null, privilege, ref ld); tp.PrivilegeCount = 1; var luidAndAtt = new LUID_AND_ATTRIBUTES {Attributes = SePrivilegeEnabled, Luid = ld}; tp.Privilege = luidAndAtt; retVal = AdjustTokenPrivileges(token, 0, ref tp, 1024, 0, 0); return true; } catch { return false; } }
public static bool DisablePrivilege(string privilege) { try { var token = 0; var retVal = 0; var tp = new TOKEN_PRIVILEGE(); var ld = new LUID(); retVal = OpenProcessToken(GetCurrentProcess(), TokenAdjustPrivileges | TokenQuery, ref token); retVal = LookupPrivilegeValue(null, privilege, ref ld); tp.PrivilegeCount = 1; // TP.Attributes should be none (not set) to disable privilege var luidAndAtt = new LUID_AND_ATTRIBUTES {Luid = ld}; tp.Privilege = luidAndAtt; retVal = AdjustTokenPrivileges(token, 0, ref tp, 1024, 0, 0); return true; } catch { return false; } }