Как переключить пользователя Windows?
Комбинацию клавиш Win+L знают многие, но иногда удобнее переключаться минуя диалог выбора пользователя. Варианты реализации такого переключения пользователей будут рассмотрены в данной статье.
Назначение:
Если компьютером пользуются несколько человек, то удобно иметь для каждого свою учетную запись. Например, у одного пользователя могут быть изменены переменные окружения, включена автоматическая смена языка ввода, управление окнами с помощью жестов мыши, а другому пользователю ничего кроме браузера не нужно. Чтобы не вводить его в замешательство нетипичными реакциями компьютера, создается отдельная учетная запись стандартного вида и поведения.
Особенности:
Пользователи, между которыми будет происходить переключение, должны предварительно войти в свою учетную запись. Так же не затрагивается вопрос безопасности. Будем считать, что они полностью доверяют друг другу. И, в то же время, могут ограничить доступ третьих лиц, простым нажатием Win+L и вызовом диалога переключения пользователей (при условии наличия паролей на своих учетных записях).
Реализация:
Например, в системе есть два пользователя: Ivanov и Petrov.
Для переключения необходимо узнать ID сеансов пользователей. Воспользуемся командной строкой и командой query user (отображает сведения о пользовательских сеансах на сервере терминалов).
ID для Ivanov – это 1, для Petrov — 2.
Переключение производится командой tscon (команда подключения к сеансу к терминального сервера).
Остается только создать ярлык на рабочем столе пользователя Petrov (правой кнопкой по рабочему столу → Создать ярлык с командой
C:\Windows\System32\tscon.exe 1 /password:123
где 1 – ID сеанса Ivanov, а 123 – его пароль).
Аналогичным образом создать ярлык на рабочем столе пользователя Ivanov (с командой
C:\Windows\System32\tscon.exe 2 /password:321
где 2 – ID сеанса Petrov, а 321 – его пароль).
Для переключения с клавиатуры можно задать сочетание клавиш для быстрого вызова (например, Ctrl + Num 0)
Демо:
Обычное переключение (для наглядности без горячих клавиш):
Переключение с ярлыка:
AutoIt-скрипт:
Скрипт для полной автоматизации процесса переключения пользователей userswitch.zip.
Для выполнения или компиляции необходимо скачать AutoIt.
#include <Constants.au3> #include <Array.au3> #include <Encoding.au3> $users = ObjCreate("Scripting.Dictionary") $users.Add("Ivanov", "123") $users.Add("Petrov", "321") Local $activeUserName Local $activeUserId Local $secondUserName Local $secondUserId Local $quser = @WindowsDir & "sysnativequery user" Local $tscon = @WindowsDir & "sysnativetscon" $out = '' $query = Run($quser, '', @SW_HIDE, $STDOUT_CHILD) While 1 $out &= StdoutRead($query) If @error Then ExitLoop Sleep(10) WEnd $out = _Encoding_866To1251($out) $arr = StringSplit($out, @CRLF, 1) For $i = 2 To UBound($arr) - 2 $username = StringStripWS(StringMid($arr[$i], 1, 23), 1+2) $userid = StringStripWS(StringMid(($arr[$i]), 43, 2), 1+2) if(StringMid($username, 1,1) == ">") Then $username = StringMid($username, 2) $activeUserName = $username $activeUserId = $userid Else $secondUserName = $username $secondUserId = $userid EndIf Next Run($tscon & " "& $secondUserId &" /password:" & $users.Item(StringLower($secondUserName)), '', @SW_HIDE)
спасибо огромное это то что было нужно, еле нашел :)
Привет
А как сменить пользователя если вход (вторым пользователем) еще не выполнен?