Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Защитить программу от множественного запуска по сети? [D5, Win95/98]


Борис ©   (2002-09-02 09:22:00) 

Здравствуйте!

Как защитить программу от множественного запуска по сети?
Т.е. есть программа (небольшая бухгалтерская, с БД Paradox). Её могут использовать как на тачке, где она стоит, так и просто запустив из расшаренной папки!

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

Мое решение (не самое разумное): При запуске прогарммы создавать определенный файл, и проверять, если он есть, то прога уже запущена. При закрытии программы удалять файл. Только одна лажа - если программа завершила работу некорректно, то придется удалять файл в ручную. У кого какие идеи?


dim-   (2002-09-02 22:56:00) [1]

Народ, зачем извращатся, здесь уже было, открываешь таблици монопольно, если ошибка то значит уже кто-то работает.


Turalyon   (2002-09-02 13:20:00) [2]

>Борис © (02.09.02 09:22)
А не проще ли будет просто проверять при старте программы имя компьютера в сети, и если оно не то которое нужно... не запускаться...?
GetComputerName


Anatoly Podgoretsky   (2002-09-02 12:06:00) [3]

Вариант с файлом точно также чреват как и Борис © (02.09.02 09:22), вариант с сервисом более щадящий


Araris   (2002-09-02 11:55:00) [4]

Я делал так :
1. При старте программа пытается открыть для чтения/записи некий файл (даже нулевой длины) в том же подкаталоге, откуда ее запустили.
2. Если открылся - держим его открытым до конца (нормального выхода, или аварийного) работы.
3. Если не открылся - значит...


Борис   (2002-09-02 11:42:00) [5]

to Skier,
С прогой должны работать либо чел с той тачки, на которой она установлена, либо кто-то один из сети (просто запуск программы из расшареной папки).


Skier   (2002-09-02 11:18:00) [6]

>Борис

> Только вот если некорректо завершилось на локальной - это
> нормально, а вот если на удаленной, и до запуска уже запустили
> локальную?


Что значит некорректо завершилось на удаленной и до запуска уже запустили локальную !?

Насколько я понял программа должна запускатся один раз,
т.е. при попытке запустить её второй раз "генерится" - отказ.
Или я что-то не так понял ?


iva   (2002-09-02 11:15:00) [7]

попробуй при запуске открывать эксклюзивно к.н. таблицу, если открыть удалось - значит ты один, если нет ...


Борис   (2002-09-02 11:11:00) [8]

Skier
Спасибо за помощь! Только вот если некорректо завершилось на локальной - это нормально, а вот если на удаленной, и до запуска уже запустили локальную?

В общем я еще буду думать над этим вопросом.


Skier   (2002-09-02 11:05:00) [9]

>Борис
IMHO,твой подход вполне нормальный, только нужно в реестре
сделать ещё и флаг корректного завершения...


Внук   (2002-09-02 10:59:00) [10]

Однако, не обратил внимания на тип ОС, тогда с DCOM лучше не связываться


Anatoly Podgoretsky   (2002-09-02 10:58:00) [11]

Не сервер, а сервис, извиняюсь


Борис   (2002-09-02 10:55:00) [12]

to Anatoly Podgoretsky
Дело в том, что серверов нет.
Т.е. если локально программа запущена, по сети ни-ни.
Если по сети запущена, локально ни-ни. Т.Е. одновременно с программой может работать только один пользователь


Внук   (2002-09-02 09:35:00) [13]

Думаю, можно встроить в программу маленький DCOM-объект, который будет отслеживать количество запусков


Anatoly Podgoretsky   (2002-09-02 09:29:00) [14]

При таком раскладе сервер и опрос по типу пинг


Наверх

Титульная страница Поиск, карта сайта Написать письмо