Как переключить пользователя Windows?

Комбинацию клавиш Win+L знают многие, но иногда удобнее переключаться минуя диалог выбора пользователя. Варианты реализации такого переключения пользователей будут рассмотрены в данной статье.

Назначение:

Если компьютером пользуются несколько человек, то удобно иметь для каждого свою учетную запись. Например, у одного пользователя могут быть изменены переменные окружения, включена автоматическая смена языка ввода, управление окнами с помощью жестов мыши, а другому пользователю ничего кроме браузера не нужно. Чтобы не вводить его в замешательство нетипичными реакциями компьютера, создается отдельная учетная запись стандартного вида и поведения.

Особенности:

Пользователи, между которыми будет происходить переключение, должны предварительно войти в свою учетную запись. Так же не затрагивается вопрос безопасности. Будем считать, что они полностью доверяют друг другу. И, в то же время, могут ограничить доступ третьих лиц, простым нажатием Win+L и вызовом диалога переключения пользователей (при условии наличия паролей на своих учетных записях).

Реализация:

Например, в системе есть два пользователя: Ivanov и Petrov.

Для переключения необходимо узнать ID сеансов пользователей. Воспользуемся командной строкой и командой query user (отображает сведения о пользовательских сеансах на сервере терминалов).

query user

ID для Ivanov – это 1, для Petrov — 2.

Переключение производится командой tscon  (команда подключения к сеансу к терминального сервера).

Остается только создать ярлык на рабочем столе пользователя Petrov (правой кнопкой по рабочему столу → Создать ярлык с командой

C:\Windows\System32\tscon.exe 1 /password:123

где 1 – ID сеанса Ivanov, а 123 – его пароль).

tscon

 

Аналогичным образом создать ярлык на рабочем столе пользователя Ivanov (с командой

C:\Windows\System32\tscon.exe 2 /password:321

где 2ID сеанса Petrov, а 321 – его пароль).

tscon

Для переключения с клавиатуры можно задать сочетание клавиш для быстрого вызова (например, 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)

3 ответы
  1. Николай
    Николай говорит:

    А как сменить пользователя если вход (вторым пользователем) еще не выполнен?

    Ответить

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *