G
Gelöschtes Mitglied 16444
Guest
Moin!
Ich habe hier ein Problem einer mit CreateProcess() gestarteten Applikation die korrekte DLL mitzugeben.
Die Applikation, die ich starten möchte liegt in ihrem eigenen Verzeichniss zusammen mit ein paar DLLs, die sie benötigt. Bei diesen DLLs fehlt eine, die es mit der aufrufenden Applikation teilen muss.
Die Applikation, die CreateProcess() aufruft, liegt in einem zweiten Verzeichnis, in dem auch die gemeinsam genutzte DLL liegt.
Insgesamt gibt es zwei solcher aufrufenden Applikationen, die in unterschiedlichen Verzeichnissen liegen. Es soll jeweils die DLL verwendet werden, die im Verzeichnis der aufrufenden Applikation liegt.
Wenn eine Applikation versucht eine DLL zu laden wird ja unter anderem auch im CWD gesucht [1]. Also habe ich versucht CreateProcess() das Verzeichniss in dem die Aufrufende Applikation liegt als current directory mit zu geben. Leider ohne Erfolg, es wird in der Suche nach der DLL nicht berücksichtigt.
Das grundsätzliche Problem lässt sich sicher auch noch auf andere Arten lösen, aber mich wundert, warum diese nicht funktioniert? Was habe ich übersehen?
[1] http://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx
Ich habe hier ein Problem einer mit CreateProcess() gestarteten Applikation die korrekte DLL mitzugeben.
Die Applikation, die ich starten möchte liegt in ihrem eigenen Verzeichniss zusammen mit ein paar DLLs, die sie benötigt. Bei diesen DLLs fehlt eine, die es mit der aufrufenden Applikation teilen muss.
Die Applikation, die CreateProcess() aufruft, liegt in einem zweiten Verzeichnis, in dem auch die gemeinsam genutzte DLL liegt.
Insgesamt gibt es zwei solcher aufrufenden Applikationen, die in unterschiedlichen Verzeichnissen liegen. Es soll jeweils die DLL verwendet werden, die im Verzeichnis der aufrufenden Applikation liegt.
Wenn eine Applikation versucht eine DLL zu laden wird ja unter anderem auch im CWD gesucht [1]. Also habe ich versucht CreateProcess() das Verzeichniss in dem die Aufrufende Applikation liegt als current directory mit zu geben. Leider ohne Erfolg, es wird in der Suche nach der DLL nicht berücksichtigt.
Das grundsätzliche Problem lässt sich sicher auch noch auf andere Arten lösen, aber mich wundert, warum diese nicht funktioniert? Was habe ich übersehen?
[1] http://msdn.microsoft.com/en-us/library/ms682586(VS.85).aspx