72ce3541f5bc2c9e1c3853997d9e04ff373184a5
При перемещаемых профилях базу нужно писать в профиль на той машине, где у пользователя открыт сеанс, иначе правку затрёт при выходе. Раньше, чтобы узнать, где человек сидит, приходилось отдельно лезть в Dameware. Что добавлено: - ad_sessions.py — обнаружение сеансов: список компьютеров из AD через ADSI (RSAT не нужен), отсев выключенных по порту 445, опрос WTS, разрешение реальной папки профиля через SID и реестр ProfileList, с фоллбэком на перебор имён папок, если служба RemoteRegistry отключена. - Панель «Сеансы пользователя в домене»: поиск по имени, выбор сеансов галочками и отдельная кнопка добавления баз в отмеченные сеансы. Старый режим записи по профилям остался для пользователей без активных сеансов. - Отключённые сеансы учитываются наравне с активными: они тоже держат профиль загруженным, и запись в серверную копию так же затрётся. - Фильтр по паре домен + пользователь, чтобы локальные учётки с тем же именем не смешивались с доменными. - Enter в полях ввода запускает соответствующее действие. Скорость (на парке в 316 машин опрос занимал около 90 секунд): - WTS вызывается через ctypes, а не pywin32: pywin32 не отпускает GIL на время нативного вызова, из-за чего опрос шёл строго последовательно и никакие потоки не помогали. На живом домене 21,4 с -> 1,3 с. - Проверка порта и опрос WTS слиты в один проход, потоков 256. - Машины, зависшие на RPC, не ждём дольше 4 секунд после того, как очередь разобрана: прервать вызов нельзя, но можно перестать его ждать. - Снимок домена кэшируется на 2 минуты, поэтому поиск следующего пользователя мгновенный; для принудительного обновления есть кнопка «Пересканировать». - COM инициализируется явно в каждом потоке: без этого повторное сканирование из нового потока падало с MK_E_SYNTAX. Безопасность записи: перед добавлением сеансы перепроверяются на живость, а если сеансов не нашлось и при этом часть машин не ответила — выводится предупреждение, чтобы базу не записали в перемещаемый профиль вслепую. Co-Authored-By: Claude <noreply@anthropic.com>
Description
No description provided
17 MiB
Languages
Python
76.9%
PowerShell
23.1%