Ограничения быстрого переключения пользователей в Windows 10 - PullRequest
0 голосов
/ 09 февраля 2020

Не уверен, подходит ли это больше для SO или сбоя сервера.

Во время тестирования юнитов обнаружилось ограничение «Быстрое переключение пользователей» на windows 10. Был следующий пакет из двух строк файл.

C:\Windows\System32\timeout.exe 30
C:\Windows\System32\shutdown.exe /L

Откройте CMD.exe и запустите файл bat. «Быстрое переключение» (ie вход в систему) на другую учетную запись. Тайм-аут завершается, как запланировано, но оператор выхода из системы не имеет никакого эффекта ... пользователь все еще вошел в систему. Когда вы вернетесь, вы увидите, что shutdown.exe находится на экране, но сеанс все еще активен.

Если вы запустите скрипт и останетесь в системе под учетной записью, через 30 секунд будет выполнена команда выхода из системы. работает как положено.

Также обнаружил то же ограничение, если вместо быстрого переключения вы вызываете заставку (ie: заблокировать учетную запись). Через 30 секунд первая команда завершается, но сеанс все еще активен.

Я просмотрел MSDN и Google, но имеется скудная документация по быстрому переключению пользователей и функциональности блокировки и тому, как они могут ограничивать то, что пользователь может делать, когда он включен или заблокирован.

1 Ответ

0 голосов
/ 09 февраля 2020

Вы можете определенно завершить сеанс, пока он заблокирован, но вы не можете сделать это с обычным ExitWindows вызовом API , который используется shutdown.exe. См. примечания в MSDN :

EWX_LOGOFF Завершает работу всех процессов, запущенных в сеансе входа в систему процесса, вызвавшего функцию ExitWindowsEx. Затем он отключает пользователя. Этот флаг может использоваться только процессами, запущенными в сеансе входа в систему интерактивного пользователя.

Для решения, использующего только пакетные файлы, logoff и соответствующие инструменты сервера терминалов позволяют вам завершить заблокированный сеанс. Пример использования PowerShell, который работает при тестировании на Windows 10 1903:

sleep 30    
logoff ([System.Diagnostics.Process]::GetCurrentProcess().SessionId)

Что касается документации, то поддержка сессий windows наиболее подробно документирована для служб удаленных рабочих столов. Все рекомендации и API, используемые для RDS, применимы для быстрого переключения пользователей. См. О службах удаленных рабочих столов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...