public PrivilegedCodeBlock(Process process, params SystemPrivilege[] systemPrivileges) { if (systemPrivileges == null || systemPrivileges.Length == 0) { return; } RuntimeHelpers.PrepareConstrainedRegions(); hObj = SafeTokenHandle.FromProcess(process.Handle, TokenAccess.TOKEN_ADJUST_PRIVILEGES | TokenAccess.TOKEN_QUERY); if (systemPrivileges.Length == 1) { prev = hObj.AdjustPrivilege(systemPrivileges[0], PrivilegeAttributes.SE_PRIVILEGE_ENABLED); } else { prev = hObj.AdjustPrivileges(systemPrivileges.Select(p => new PrivilegeAndAttributes(p, PrivilegeAttributes.SE_PRIVILEGE_ENABLED)).ToArray()); } }