Як переключити користувача windows з командного рядка

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

призначення:

особливості:

Користувачі, між якими буде відбуватися перемикання, повинні попередньо увійти в свій обліковий запис. Так само не зачіпається питання безпеки. Будемо вважати, що вони повністю довіряють один одному. І, в той же час, можуть обмежити доступ третіх осіб, простим натисканням Win + L і викликом діалогу перемикання користувачів (за умови наявності паролів на своїх облікових записах).

Реалізація:

Наприклад, в системі є два користувачі: Ivanov і Petrov.

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

Як переключити користувача windows з командного рядка

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

Залишається тільки створити ярлик на робочому столі користувача Petrov (правою кнопкою по робочому столу → Створити ярлик з командою

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

де 1 - ID сеансу Ivanov. а 123 - його пароль).

Як переключити користувача windows з командного рядка

Аналогічним чином створити ярлик на робочому столі користувача Ivanov (з командою

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

Як переключити користувача windows з командного рядка

Для перемикання з клавіатури можна задати поєднання клавіш для швидкого виклику (наприклад, Ctrl + Num 0)

Звичайне перемикання (для наочності без гарячих клавіш):

Перемикання з ярлика:

AutoIt-скрипт:

Скрипт для повної автоматизації процесу перемикання користувачів userswitch.zip.
Щоб мати змогу здійснювати компіляції необхідно завантажити AutoIt.

#include #include #include $ Users = ObjCreate ( "Scripting.Dictionary") $ users.Add ( "Ivanov", "123") $ users.Add ( "Petrov", "321") Local $ activeUserName Local $ activeUserId Local $ secondUserName Local $ secondUserId Local $ quser = @WindowsDir "\ Sysnative \ query user" Local $ tscon = @WindowsDir "\ Sysnative \ tscon" $ 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)

Схожі статті