Windows - Пишем в vbs

Не работает? Начинай читать инструкцию.

Скрипт запрещения двойного запуска приложений

Как запретить пользователю запускать копию приложения. Запретить запускать одну и туже программу одновременно. Например браузер.

Предлагаю ознакомиться с предложениями моих партнёров

В моём случае надо запретить запретить запускать одновременно программу 1С. Может это не совсем приятно для некоторых работников, но всё же при запуске нескольких копий одной программы соотвтственно и тратится много ресурсов сервера.

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

Реализовать это просто на AutoIt3. Если нет необходимости ставить AutoIt3 на сервер, то скрипт можно компилировать в *.exe

; ** Скрипт запрещения двойного запуска приложений**
; Функция Singleton создаёт семафор при помощи WinAPI. Если такой семафор уже создан, то заканчиваем работу 
Func Singleton($semaphore)
 Local $ERROR_ALREADY_EXISTS = 183
 DllCall("kernel32.dll", "int", "CreateSemaphore", "int", 0, "long", 1, "long", 1, "str", $semaphore)
 Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
 If $lastError[0] = $ERROR_ALREADY_EXISTS Then Exit -1
EndFunc
Singleton("Mutex")
; Системная функция ShellExecuteWait запускает приложение и ожидает окончания работы с ним
; Дожидаться завершения программы нужно, чтобы корректно работал Mutex
; $CmdLineRaw - параметр запуска получаемый скриптом
ShellExecuteWait("C:\Program Files (x86)\Total Commander\Totalcmd.exe", $CmdLineRaw, @ScriptDir, "open", @SW_MAXIMIZE)

Ну вот и всё. Теперь если открыть Total Commander по этому скрипту, то вторую копию Total Commander скрипт не запустит.

Так же есть пример по теме: Как запретить повторный запуск программы через bat файл

Предлагаю ознакомиться с предложениями моих партнёров