RemoteApp ограничение на число одновременных сессий от 1-го пользователя

Пригодилось ограничить число запущенных копий 1-го размещенного приложения для пользователей. Т.е., чтоб один и этот же пользователь не мог запустить 2 копии подходящего нам приложения под собственной учетной записью.

Описание

Для данной задачи был применен VBS скрипт последующего содержания:

Set objShell = CreateObject("WScript.Shell")    strProcessCounter = "0"  Set objWMIService = GetObject("winmgmts:\.rootcimv2")    Set colProcessList = objWMIService.ExecQuery ("SELECT * FROM Win32_Process Where Name LIKE 'notepad.exe'")    For Each objProcess in colProcessList  	colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)  	If (strNameOfUser = objShell.ExpandEnvironmentStrings("%UserName%")) then  		strProcessCounter = strProcessCounter + 1  	End if  Next  If (strProcessCounter >= 2) then  	MsgBox "Не следует запускать одну и ту же программку по пару раз, необходимо один раз надавить на ярлычек и подождать, пока она запустится. Проявите терпение.", 16, "Внимание!!!"  	Wscript.Quit  End if    objShell.Run("""C:Виндовсsystem32notepad.exe""")

Этот скрипт при запуске отыскивает все запущенные процессы с именованием «notepad.exe», и дальше в цикле инспектирует от имени какого пользователя запущены данные процесс. Если обнаруживается, что данный пользователь уже превысил количество одновременно запущенных из под его имени процессов, то появится окно с предупреждением:

Все что нам осталось сделать — это на терминальном сервере настроить запуск этого скрипта и создать ярлык для опубликованного приложения:

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

Комментарии

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

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