- Содержание статьи
Пригодилось ограничить число запущенных копий 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 раз на ярлык и т.д. Все ограничивается только вашей фантазией и знаниями 😉

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