Всем привет, Я Артур Валиев, Не хотелось но на этот раз самому но я все-таки попрошу гуся что-бы помог рассказать мою историю.
Три дня назад я сидел и сравнивал integrity level токена процесса с integrity level окна в фокусе, чтобы понять, почему Диспетчер задач блокирует ввод удалённого пользователя. Никто в мире, кроме меня, в этот момент не знал, что это вообще проблема. Я был там один. И мне было хорошо.
Вот код, который я написал в ту ночь:
/// True if the foreground window demands more privilege than we have — a /// signal that mouse/keyboard input this process injects will silently be /// dropped by Windows UIPI (Task Manager, another elevated app, a UAC /// prompt). See TZ_HOST_SERVICE.md complication #2. fn foreground_needs_elevation() -> bool { unsafe { let ours = match integrity_level_of_process(GetCurrentProcess()) { Some(l) => l, None => return false, }; let hwnd: HWND = GetForegroundWindow(); if hwnd.0 == 0 { return false; } let mut pid = 0u32; GetWindowThreadProcessId(hwnd, Some(&mut pid)); let Ok(process) = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, false, pid) else { return false; }; let theirs = integrity_level_of_process(process); let _ = CloseHandle(process); match theirs { Some(theirs) => theirs > ours, None => false, } } }