public bool SetPrivilege(string lpszPrivilege, bool bEnablePrivilege) { bool Status = true; Kernel32.TOKEN_PRIVILEGES priv = new Kernel32.TOKEN_PRIVILEGES(); IntPtr hToken = IntPtr.Zero; Kernel32.LUID luid = new Kernel32.LUID(); int RetLength = 0; if (!Kernel32.OpenProcessToken(this.hProcess, 0x0020, ref hToken)) { Status = false; goto EXIT; } if (!Advapi32.LookupPrivilegeValueA(null, lpszPrivilege, ref luid)) { Status = false; goto EXIT; } priv.PrivilegeCount = 1; priv.Privileges = new Kernel32.LUID_AND_ATTRIBUTES(); priv.Privileges.Luid = luid; priv.Privileges.Attributes = (int)((bEnablePrivilege == true) ? 0x00000002L : 0x00000004L); if (!Kernel32.AdjustTokenPrivileges(hToken, false, ref priv, 0, IntPtr.Zero, ref RetLength)) { Status = false; goto EXIT; } EXIT: if (hToken != IntPtr.Zero) { Kernel32.CloseHandle(hToken); } return(Status); }
public static extern bool LookupPrivilegeValueA(string lpSystemName, string lpName, ref Kernel32.LUID lpLuid);