Имеется рабочий ехе файл, нужно, чтобы он запускался только определенным приложением и никак иначе. Например при клике должен выдавать месагу: "для запуска используйте приложение...". Как реализовать? Желательно на Делфи.
1) Получаешь список процессов (CreateToolhelp32Snapshot) 2) получаешь свой PID (GetCurrentProcessId ) 3) в списке процессов ищешь свой процесс по PID'у (th32ProcessID) (Process32First + Process32Next) 4) в структуре описание твоего процесса берешь PID родителя (th32ParentProcessID) 5) Ищешь PID родителя в списке процессов и потом сравниваешь его имя с эталонным. Если не то, значит ошибку орать
ехе файл, который нужно запускать, является исполняемым файлом рабочей программы. Как в него вшить код? Мб есть какие-то проги? Ассемблер и всё что с ним связано - не вариант.
Если нет исходников, то 1) как вариант - написать весь код в виде DLL и затем добавить эту DLL в импорт (главное в DLL сделать какую нить экспортируемую функцию). Тогда при старте проги автоматом будет грузиться DLL и вызывать твой код, если он будет в точке входа в DLL. Таким образом изменить импорт проги могут многие редакторы PE файлов 2) если хочешь всё одним файлом, то без ассемблера не обойтись. т.к. тебе придется делать следующее: - создать базонезависимый код - сделать поиск нужный API функций - написать код который сделает всё проверку - зафигачить его в новую секцию или расширить последнюю - перебить точку входа на этот код - после отработки твоего кода вызвать оригинальную точку входа так что проще первое чем второе.
Изменить расширение файла на неизвестное винде (например .x9r). Привязать это расширение к своей проге на дельфи. Своей прогой переименовывать расширение и запускать.
2 kolored в консоле можно вбить текст start имя_проги.x9r и всё запустится нормально. да и в любой другой проге можно подобное сделать, а тут как я понял нужно проверить имя запускающего.