Текущий архив: 2004.03.03;
Скачать: CL | DM;
Вниз
---|Ветка была без названия|--- Найти похожие ветки
← →
DBM (2004-02-10 17:22) [0]Подскажите, реально ли это (запрет запуска второго экземпляра приложения) обойти.
Какие методы защиты использованы неизвестно.
← →
N169 (2004-02-10 17:25) [1]1)Если неизвестно, то нельзя.
2)Если uспользованы именованные mutexы, можно попробовать запускать экземпляры приложения от имени разных пользователей.
← →
DBM (2004-02-10 17:29) [2]>>N169
А если использован поиск по Handle?
← →
Ihor Osov'yak (2004-02-10 17:30) [3]ну, влом думать вообще, говори конкретнее.
Некоторые, как постановка атома - довольно просто. Иные, например именованные ядренные обьекты - посложнее будет. Здесь наверно можно перехватом соотв. апишных вызовов, что далеко нетривиально..
Но, с другой стороны - я бы не стал этим увлекаться - раз автор сделал запрет - значит, у него были весткие на то причины.. Вероетнее всего - что два экземпляра не смогут на одной хост-машине нормально работать..
зы. а способов блокировать запуск второго экземпляра - уйма.. И бог знает, что там напридумано.. Начиная от тупой блокировки файла.. Здесь только реверс поможет, или мониторинг всевозможный..
← →
Ihor Osov'yak (2004-02-10 17:31) [4]2 [1] N169 (10.02.04 17:25)
Не всегда поможет.. есть таеой волшебній преффикс в имени, Global
← →
DBM (2004-02-10 17:33) [5]>>Ihor Osov"yak ©
Бывает ли так, что запрет запуска сделан потому, что разработчик не смог (или не хотел) разбираться c "почему эта сволочь не работает, если я запускаю ее еще раз"?
← →
N169 (2004-02-10 17:35) [6]>DBM (10.02.04 17:29) [2]
Тогда не пройдёт
>Ihor Osov"yak © (10.02.04 17:31) [4]
Я не случайно написал "можно попробовать" :o)
Иногда работает. Иногда нет.
← →
DBM (2004-02-10 17:40) [7]>> All
Off_topic
Простите за русский в теме. Самому глаза режет.
← →
Владислав (2004-02-10 18:19) [8]> DBM (10.02.04 17:33) [5]
С трудом этому вериться. Вот если сказать, чтобы работало корректно, то да.
← →
DBM (2004-02-10 18:23) [9]>>Владислав © (10.02.04 18:19) [8]
Разница?
← →
Ihor Osov'yak (2004-02-10 18:25) [10]2 [9]
Есть. И очень большая.
← →
DBM (2004-02-10 18:36) [11]То есть существуют программы, использующие такие методы (не прог. термин), которые по умолчанию не могут работать в "дубле"?
← →
Владислав (2004-02-10 18:39) [12]> DBM (10.02.04 18:36) [11]
Да. Можно вспомнить разные причины... Например синхронизация при обращении к файлам... Причин может быть много. Зачем городить огород, если можно предотвратить проблемы единственным экземпляром?
← →
Игорь Шевченко (2004-02-10 18:54) [13]DBM (10.02.04 18:36)
> То есть существуют программы, использующие такие методы
> (не прог. термин), которые по умолчанию не могут работать
> в "дубле"?
Аська, например
← →
DBM (2004-02-10 18:57) [14]>>Владислав ©
Спасибо за информацию. Буду знать.
Но в данном конкретном случае - это программа для записи данных в девайс via ComPort - проблемм, насколько я понимаю, две.
1. Доступ к файлу
2. Доступ к порту
Второй решается элементарно, первый же обходится труднее, но все же решаемо (самый простой вариант - делать копию)
Дело в том, что весь подобный софт расчитан на потоковую запись (т.е. подразумевается, что девайсов ОЧЕНЬ много и времени ОЧЕНЬ мало), соответственно непонятно желание разработчиков (или в данном конкретном случае, видимо разработчика) ограничить данный поток. Экономическими мерами это не объяснить, слишком далеко мы друг от друга. Очень далеко.
← →
DBM (2004-02-10 18:59) [15]>>Игорь Шевченко © (10.02.04 18:54) [13]
Не надо лукавить (очень модное выражение в "потрепаться"). Вы отлично знаете, что это лечится. Я не думаю, что те, кто это сломал, добрались до исходников ICQ.
← →
Ihor Osov'yak (2004-02-10 19:03) [16]я еще своих три копейки..
regedit например. Ну, здесь больше за принцыпом - береженного бог бережет.
А вот OutLook Express - имеет на то больше оснований.
Если говорить вообще - очень часто это программы, которым нужно либо монопольное использование какого-то ресурса, либо когда решение задачи многопользовательского доступа к какому-то ресурсу есть нецелесообразным. В таком случае - обеспечение запуска приложения в одном экземпляре - один из приемов выхода из такой ситуации. Своего рода первый рубеж защиты. И очень не мудро, когда такой рубеж - единственный.
← →
Игорь Шевченко (2004-02-10 19:03) [17]DBM (10.02.04 18:59)
А смысл ломать ? Как будут работать две аськи с одним UIN ?
← →
Ihor Osov'yak (2004-02-10 19:08) [18]2 [14]
Так все же via или все же as? И конкретно один дивайс или несколько?
← →
DBM (2004-02-10 19:56) [19]>>Ihor Osov"yak © (10.02.04 19:08) [18]
Ну, не знаю... Я всегда считал, что via - это "через" именно в данном контексте... Если я не прав, то поправте меня.
Несколько одинаковых на нескольких портах.
← →
Ihor Osov'yak (2004-02-10 20:15) [20]ну, значит я не понял контекста.. Собственно сам com-порт допускает только эксклюзивное открытие - так уж стандартный драйвер последовательного порта написан, и это вполне логично.. Ну, а случай нескольких девайсов на нескольких портах - что ж, вполне возможно, что недеочет разработчика - в том, что он делает возможным запуск приложения в одном экземпляре. Но нельзя и отбрасывать версию о том, что нам известны не все обстоятельства..
Хотя если это недочет - то вполне может подойти совет а-ля [1] - тот же хп в контекте разных пользователей, или терминальный сервер в разных сессиях..
Кстати - определить какой метод используется для блокировки запуска второго экземпляра - не такая уж архисложная задача..
WinObj - для просмиотра именованых обьектов, filemon для отслеживания файловой активности, regMon - то же для регистри (все это добро на сисинтерналс), метод поиска окна - можна догадаться при анализе чего програмулина импортирует - имхо, нормальной программе файндвиндоу всякие не нужны :-)... и так далее.. В худшем случае - немного тренировки с отладчиком.. Но здесь уже элемент везения..
Но самый правильный путь - связаться с разработчиком..
← →
Ihor Osov'yak (2004-02-10 20:20) [21]кстати - причина блокировки может юыть до простого банальна - настройки в регистри, причем не предусмотрено нескольких вариантов конфигураций.. То есть все приложения при запуске попытаются работать с одним портом. Изменение настройки в одном приложении - повлияет на все.
Если настройки не в HKCU, а в HKLM - то никакие ухищрения с терминалами и сесиями не помогут..
← →
Дремучий (2004-02-10 20:44) [22]
> Игорь Шевченко © (10.02.04 19:03) [17]
> А смысл ломать ? Как будут работать две аськи с одним UIN ?
с одним точно не будут :)) а вот с разными можно, только стандартная ICQ всеравно не разрешает :)
Почему? По простой причине: они используют горячие клавиши на уровне системы(например прятание аськи). А такие комбинации нельзя присвоить двум экземплярам программы. Первый экземпляр удачно регистрирует:
//регистрируем комбинацию Ctrl+F12
id:= GlobalAddAtom("ICQ-visible");
hkey:= RegisterHotKey(Application.MainForm.Handle, id, MOD_CONTROL, VK_F12);
а другой уже в пролете, так как комбинация Ctrl+F12 занята на системном уровне. ИМХО, только из-за этого. Так как у меня абсолютно удачно уживаются несколько "запущеных" экземпляров самописной аськи :))
← →
DBM (2004-02-10 20:45) [23]>>Ihor Osov"yak ©
Программа не предусматривает записи/чтения регистра.
Нет, с эти не связано.
Страницы: 1 вся ветка
Текущий архив: 2004.03.03;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.006 c