Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Двойной запуск приложения


Автор: APXEOLOG 5.7.2008, 10:51
Имееться программа. Она не дает запустить вторую копию (даже из другого каталога). При этом, однако, вторую копию можно запустить переключившись на другого пользователя (WinXP). НО попытку запустить в одноом и том же пользователе вторую копию от имени нового пользователя программа отслеживает и пресекает. Как обмануть это защиту?

Автор: Riply 6.7.2008, 01:23
Цитата(APXEOLOG @  5.7.2008,  10:51 Найти цитируемый пост)
Как обмануть это защиту? 


Обычно, для подобной защиты используют именованные объекты.
Если в данном случае это так, то найти этот объект и попытаться закрыть.
Но подобные действия череваты непредсказуемыми последствиями,
ибо защита от повторного запуска ставиться не от нечего делать.
Значит две копии могут мешать друг другу, а как и во что это выльется - одному богу известно  smile 

Автор: superwolf 9.11.2009, 23:42
Подскажите хотя бы в какую сторону копать и как найти эти "именованные объекты". Нужно найти pid процесса главного окна программы и искать все объекты, которые этот процесс породил? Я правильно мыслю? По каким признакам можно понять этот "именованный объект"?

Автор: Демо 17.11.2009, 22:35
Цитата(superwolf @  9.11.2009,  23:42 Найти цитируемый пост)
Подскажите хотя бы в какую сторону копать и как найти эти "именованные объекты". Нужно найти pid процесса главного окна программы и искать все объекты, которые этот процесс породил? Я правильно мыслю? По каким признакам можно понять этот "именованный объект"? 


Попробовать перехватывать CreateMutex, CreateSemaphore и т.п. с целью обнаружения создаваемого объекта для первого и второго экземпляра.
После того, как найдёшь внедряться в процесс и уничтожать там нужный объект.

Автор: shaderz 19.12.2009, 19:56
а создать процесс от другова юзера на том же десктопе? CreateProcessAsUser  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)