Imam jedan .exe fajl i u njemu zapakovano jedan ili vise DLL-ova koje raspakujem pri start-u .
Pri zatvaranju programa hocu da se ovi dll-ovi obrisu
// OnClose event
POSITION ps = mapModules.GetStartPosition() ;
while (ps)
{
LPCTSTR szModule = NULL ;
HINSTANCE hInstance = NULL ;
mapModules.GetNextAssoc(ps,szModule,hInstance) ;
if (FreeLibrary(hInstance) )
{
if (!DeleteFile(szModule))
{
TCHAR szMsg [MAX_PATH];
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),NULL,szMsg,MAX_PATH,NULL) ;
MessageBox(szMsg,APP_NAME,MB_OK) ; // Access denied !!!
}
}
}
Medutim fajlovi se nikad ne obrisu i dobijem poruku Access denied ..
Napominjem da su dll-ovi sa Normal File atributima i da imam sistemske privilegije i da ih pri izlasku iz programa uredno obrisem iz explorera.
U toku runtime-a samo jednom pozivam LoadLibrary tako da reference count za taj dll bi trebao da je 0 .
Ima li neko ideju a da nije sa batch fajlovima .... ?