// プロセストークンに権限を追加 private static bool AdjustToken() { if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref _myToken)) { Console.WriteLine("OpenProcess:失敗"); return(false); } if (!LookupPrivilegeValue(null, SE_RESTORE_NAME, ref _restoreLuid)) { Console.WriteLine("LookupPrivilege:失敗"); return(false); } if (!LookupPrivilegeValue(null, SE_BACKUP_NAME, ref _backupLuid)) { Console.WriteLine("LookupPrivilege:失敗"); return(false); } TOKEN_PRIV tokenPriv1 = new TOKEN_PRIV(_restoreLuid); TOKEN_PRIV tokenPriv2 = new TOKEN_PRIV(_backupLuid); if (!AdjustTokenPrivileges(_myToken, 0, ref tokenPriv1, 1024, 0, 0)) { Console.WriteLine("AdjustToken:失敗"); return(false); } if (!AdjustTokenPrivileges(_myToken, 0, ref tokenPriv2, 1024, 0, 0)) { Console.WriteLine("AdjustToken:失敗"); return(false); } return(true); }
private static extern bool AdjustTokenPrivileges( int tokenHandle, int disablePrivs, [MarshalAs(UnmanagedType.Struct)] ref TOKEN_PRIV newState, int buffereLength, int previousState, int returnlength);