написал Dll, через запятую добавил в список appinit_dll ребутнулся смотрю список длл у _любой_ проги - моей нету. путь аказан верно. действие длл: BOOL APIENTRY DllMain() { return true; } пробовал также BOOL APIENTRY DllMain() { WinExec("C:\\windows\\calc.exe",SW_SHOW); return true; } также не пашет. че за фигня?
спасибо. сто пудов. хотя редирект entry point в exe-шнике работает. не знал что в длл не пашет. а как узнать какой .exe подгружает оную dll?
1 способ: GetModuleFileName(0, &Buffer, buffer_size) 2 способ: GetCurrentProcessId() 3 способ: пропарсить PEB ЗЫ: твоя либа намертво повесит систему. Смотри Если она в апп_инит, то твоя либа загружается во все новые процессы, в которых грузится user32.dll Твоя либа запускает калк.ехе Калк.ехе подгружает твою либу которая вновь запускает новую копию калк.ехе Используй мутексы или другие средства синхронизации Например Код (Text): if (!OpenMutex(MUTEX_ALL_ACCESS,0, "OurWasmMutex" )) { CreateMutex(0,0,"OurWasmMutex"); ... \\тут твой код ... } return 1;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows: AppInit_DLLs Пробелов в пути к файлу быть не должно - пробел (как и запятая, надо же) используется в качестве разделителя. Так что надо использовать короткие пути без кавычек. Ещё Рихтер писал, что используется только путь к первой dll, остальные игнорируются - это не так как минимум с XP SP2 (т.е. теперь используются пути ко всем dll). После изменения этого параметра перезагружаться не обязательно. У DllMain, как отметил zoool, больше нуля параметров. Их три. Алсо, калькулятор обычно находится в каталоге system32 Если это действительно так и дело не в пробелах в пути к dll, то попробуй вызвать LoadLibrary с именем своей dll внутри DllMain,..
кому интересно, было вот что: с целью уменьшения размера либа компилилась как /ALIGN:16 .... c exe катит а вот dll не захотлеась грузиться... убрал нах выравнивание - все заработало