Erkennen fehlender Bibliotheken beim starten von Unterprozessen.

Frarr

Mitglied
Hallo,
ich habe folgendes Problem:

Ich habe ein Programm geschrieben, mit dem ich andere Executables starten kann.
Sollte bei denen jedoch eine DLL Fehlen, geht dies schief.
Beim Start per Oberfläche oder über die cmd line gibt Windows einen entsprechende Dialog aus:
"Die Dynamic Link Library xyz wurde nicht im angegebenen Pfad... usw."

Ich erhalte jedoch keine entsprechende Info, wenn ich den Prozess per CreateProcess erzeuge.
Der Rückgabewert ist "true", was auch korrekt ist, da das Programm zu starten versucht. Jedoch kann es dies nicht und beendet sich sofort, aber leider ohne irgendeinen Hinweis.

Gibt es Möglichkeiten dieses Problem zu erkennen und sichtbar zu machen?

Ich bin für jeden Tipp dankbar. :)
 
Wenn du Deinen Prozess mit CreateProcess erfolgreich gestartet hast, mußt Du mit WaitForSingleObject auf die Beendigung des Prozesses warten. Danach kannst Du mit GetExitCode Process auf den Rückgabewert des Programmes prüfen. Wenn der '0' ist, ist i.A. alles OK, Wenn er ERROR_DLL_NOT_FOUND (1157) oder ERROR_INVALID_DLL (1154) ist, dann hat irgendwas mit der Dll nicht geklappt. Weitere Error Codes findest Du in der MSDN unter System Error Codes.
Wie man allerdings herausfindet, welche Dll es war, die den Fehler ausgelöst hat, weiß ich leider nicht.
 

Neue Beiträge

Zurück