Войти

Показать полную графическую версию : [решено] Нужно что бы программа в локальной сети запускалась в единственном энкземпляре


deck53
22-02-2011, 19:29
Нужно что бы программа в локальной сети запускалась в единственном энкземпляре.
Нашел способ с помощью утилиты PsList, но несколько дней экспериментов с политиками и правами доступа не дали рензультата, зато есть доступ в общую папку. Из чего родилась идея:
-Батник должен запускать данную программу, при запуске создавая в своей общей папке например 111.txt
-После выхода из программы 111.txt должен удаляться (Не знаю воозможно ли это).
-А перед запуском проверять, нет ли такокого файлика в чужой общей папке по адресу \\User\111.txt Соответственно если файл есть, то программа не должна запускаться.
Буду признателен за помощь. В батниках я чайник...

Anonymоus
23-02-2011, 14:27
$Userlist - список пользователей, по 1 на строку. Например, так:

\\192.168.1.217
\\MORFEY
\\BIBLIOTEKA
\\MICROSOF-D58208

$Sharename - Название общей шары на всех компах в сети
$LocalShare - Путь к общей шаре на этом компе
$Program - Нужная программа
Если компьютер не в сети, то опрашивать его может до 20 секунд, чтобы не казалось, что скрипт завис, я добавил индикацию текущего адреса


@Echo Off
Set $Userlist=userlist.txt
Set $Sharename=Temp
Set $LocalShare=D:\Temp
Set $Program=C:\Windows\notepad.exe

Set /A $isRunning=0
For /F "tokens=*" %%l In (%$Userlist%) Do (
Echo Checking... %%l\%$Sharename%\
If Exist %%l\%$Sharename%\isRunning.flag Set /A $isRunning=$isRunning+1
)
If Not %$isRunning%==0 (Exit) Else (Echo.>"%$LocalShare%\isRunning.flag")
Echo Do not close this window
Call "%$Program%"
Del "%$LocalShare%\isRunning.flag"

Busla
23-02-2011, 17:44
Если компьютер не в сети, то опрашивать его может до 20 секунд »
Это что-то новое - if exists вообще не работает с сетевыми путями ;-)

deck53
23-02-2011, 19:56
Anonymоus Код работает. Премного благодарен, просто огромное спасибо.
Сначала isRunning.flag не создавался в своей общей папке (нет доступа). Оказалось что надо добавить в разрешения себя (админа !!!).

Anonymоus
23-02-2011, 22:52
if exists вообще не работает с сетевыми путями »
А вот автор этой статьи (http://habrahabr.ru/blogs/crazydev/62919/) даже написал мультиплеер крестики-нолики, именно с использованием файлов-меток и if (not) exist, ну и на закуску - подобие телнета с использованием аналогичных, по вашему утверждению, не работающих команд.

Busla
24-02-2011, 10:08
Anonymоus, да, извиняюсь - что-то попутал




© OSzone.net 2001-2012