public static void SetTokenPrivilege(ref IntPtr hToken, string privilege) { if (!validPrivileges.Contains(privilege)) { //Console.WriteLine("[-] Invalid Privilege Specified"); log.Log(LogType.Error, "Invalid Privilege Specified!"); return; } log.Log(LogType.Normal, "[+] Adjusting Token Privilege..."); //Console.WriteLine("[*] Adjusting Token Privilege"); //////////////////////////////////////////////////////////////////////////////// var luid = new WinAPI._LUID(); if (!WinAPI.LookupPrivilegeValue(null, privilege, ref luid)) { //GetError("LookupPrivilegeValue"); log.Log(LogType.Failure, "LookupPrivilegeValue: {0}", Marshal.GetLastWin32Error()); return; } //Console.WriteLine(" [+] Received luid"); log.Log(LogType.Normal, "[+] Recieved LUID..."); //////////////////////////////////////////////////////////////////////////////// var luidAndAttributes = new WinAPI._LUID_AND_ATTRIBUTES(); luidAndAttributes.Luid = luid; luidAndAttributes.Attributes = Constants.SE_PRIVILEGE_ENABLED; var newState = new WinAPI._TOKEN_PRIVILEGES(); newState.PrivilegeCount = 1; newState.Privileges = luidAndAttributes; var previousState = new WinAPI._TOKEN_PRIVILEGES(); uint returnLength = 0; //Console.WriteLine(" [*] AdjustTokenPrivilege"); //log.Log(LogType.Debug, ""); if (!WinAPI.AdjustTokenPrivileges(hToken, false, ref newState, Marshal.SizeOf(newState), ref previousState, out returnLength)) { //GetError("AdjustTokenPrivileges"); log.Log(LogType.Failure, "AdjustTokenPrivileges: {0}", Marshal.GetLastWin32Error()); return; } log.Log(LogType.Success, "Adjusted Token to: {0}", privilege); //Console.WriteLine(" [+] Adjusted Token to: " + privilege); //return; }