![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Защитить программу от множественного запуска по сети? [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]При таком раскладе сервер и опрос по типу пинг