1

Тема: AHK: Быстрая смена пользователя

Написал небольшой скриптик для быстрой "смены" пользователей. Логин и пароль обоих пользователей лежат в .ini файле рядом с .exe`шником. Файл .ini имеет тоже имя, что и .exe(Например: CngUser.exe и CngUser.ini).
Скрипт начинает работу сразу после запуска .exe и если текущий пользователь не совпадает с User1 из .ini файла, то меняет пользователя на User1, иначе меняет на User2

Тело .ahk скрипта:

SplitPath, A_ScriptName,,,, name_of_exe
IniRead, u_name1, %A_ScriptDir%\%name_of_exe%.ini, User1, username
IniRead, u_pwd1, %A_ScriptDir%\%name_of_exe%.ini, User1, password
IniRead, u_dmn1, %A_ScriptDir%\%name_of_exe%.ini, User1, domain
IniRead, u_name2, %A_ScriptDir%\%name_of_exe%.ini, User2, username
IniRead, u_pwd2, %A_ScriptDir%\%name_of_exe%.ini, User2, password
IniRead, u_dmn2, %A_ScriptDir%\%name_of_exe%.ini, User2, domain

Process, Exist, Explorer.exe
PID := ErrorLevel 
h_process := DllCall("OpenProcess", UInt, 0x1, Int, 0, UInt, PID)   ; 0x1 — право доступа «PROCESS_TERMINATE»
DllCall("TerminateProcess", UInt, h_process, UInt, 1) 
DllCall("CloseHandle", UInt, h_process)

Sleep, 1000

if (A_UserName != u_name1)
{
u_name = %u_name1%
u_pwd = %u_pwd1%
u_dmn = %u_dmn1%
}
else
{
u_name = %u_name2%
u_pwd = %u_pwd2%
u_dmn = %u_dmn2%
}

RunAs, %u_name%, %u_pwd%, %u_dmn%
Run %A_WinDir%\Explorer.exe
RunAs
Return

Содержание .ini файла:

[User1]
username=текущий_пользовател
password=текущий_пароль
domain=текущий_домен
[User2]
username=пользователь2
password=пароль2
domain=домен2

За основу взят скрипт из коллекции форума: AHK: Завершение процесса explorer.exe (без перезапуска Проводника)

Буду рад любым исправлениям\дополнениям.

2

Re: AHK: Быстрая смена пользователя

MADDDy, это вроде как не смена пользователя, а снятие процесса Проводника и запуск его от другого имени. Пользователь при этом остаётся тем же.

3

Re: AHK: Быстрая смена пользователя

Ну поэтому я и написал слово "Смена" в ковычках.
Для меня было главное, что бы открывались другие Рабочие столы и запускались программы от имени другого пользователя без необходимости постоянного ввода пароля, точнее вообще без ввода пароля напрямую.

4

Re: AHK: Быстрая смена пользователя

MADDDy пишет:

Ну поэтому я и написал слово "Смена" в ковычках.

Спасибо, ясно. Я в тексте не доглядел, а в заголовке — без кавычек. Потому понял превратно.

5

Re: AHK: Быстрая смена пользователя

alexii, есть ли ценность для Коллекции? Не могу проверить, у меня на компе только один пользователь.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Быстрая смена пользователя

У меня заведено несколько пользователей, но:
* я использую запуск Far Manager «от имени» (когда, допустим, мне нужны административные полномочия не завершая сеанса пользователя), вместо «Far Manager» может быть обычная командная строка;
* далее из-под него (или из-под cmd.exe) делается запуск Проводника в отдельном процессе: #4; если нужно полностью заместить Проводник (т.е. не только папки, но и Рабочий стол+Главное меню) — предварительно делается OFF: завершение работы Проводника без снятия процесса «explorer.exe».

Это позволяет как пользоваться Проводником из-под нужной учётной записи, так и в любой момент вернуться к Проводнику текущего пользователя без необходимости знания его имени/пароля.

7

Re: AHK: Быстрая смена пользователя

alexii пишет:

Это позволяет как пользоваться Проводником из-под нужной учётной записи, так и в любой момент вернуться к Проводнику текущего пользователя без необходимости знания его имени/пароля.

После завершении проводника основного пользователя в любом случае прийдется, либо его запускать от имени, либо завершать/менять пользователя, но последнее запрещенно доменными политиками нашего предприятия.

8

Re: AHK: Быстрая смена пользователя

MADDDy, диспетчер задач или командный процессор не запрещено запускать? Не вижу проблемы, если нужно завершить Проводник текущего пользователя — сие просто потребует впоследствии некоторых дополнительных действий. И только. Так что, совершенно не нужно ни:

…в любом случае прийдется, либо его запускать от имени, либо завершать/менять пользователя

ни знать имя/пароль текущего пользователя.

Выполните «Запуск от имени» для «cmd.exe», затем «explorer.exe /separate» из-под него. Запустите затем Диспетчер задач и убедитесь, что работают как минимум два (или три — в зависимости от разделённости процессов Проводника для Рабочего стола и для папок) процесса Проводника от разных учётных записей.

9 (изменено: MADDDy, 2011-03-25 17:11:33)

Re: AHK: Быстрая смена пользователя

alexii пишет:

Выполните «Запуск от имени» для «cmd.exe», затем «explorer.exe /separate» из-под него.

С таким же успехом можно использовать скрипт:

RunAs, Юзер, Пароль, Домен
Run %A_WinDir%\Explorer.exe /separate
RunAs

10

Re: AHK: Быстрая смена пользователя

MADDDy, угу, и я про то же.