Lösung zu Problemen mit unterschiedlichen DLL Versionen bei Windows Programmen

Manche haben immer noch nicht verstanden wie man ordentlich programmiert. Da werden einfach Änderungen an DLLs vorgenommen ohne Rücksicht auf anderen Programme. So kommt es dazu dass auf einem PC zwei Programme ablaufen müssen, die aber unterschiedliche DLL Versionen benötigen. Das geht eigentlich nicht, da die DLLs in den Standardsuchpfaden abgelegt werden und die sind nun mal für alle Programme unter Windows gleich. Es gibt aber eine Lösung zu dem Dilemma:

Sie können Programm bezogen Suchpfade definieren indem Sie in der Registry unter HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths einen neuen Unterschlüssel mit dem Namen der exe Datei anlegen. Also z. B. AcroRd32.exe für den Acrobat Reader. In den Standardschlüssel tragen Sie dann noch einmal den vollständigen Pfad zur exe Datei ein. Als Beispiel auch hier wieder der Acrobat Reader: C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe. Nun erstellen Sie ein Verzeichnis und legen dort die verkorkste DLL Datei mit der benötigten Version hinein. Erstellen Sie einen weiteren RegSZ Eintrag mit dem Namen Path und als Wert tragen Sie den Pfad zu Ihrem eben erstellen Ordner mit der DLL Datei ein (z.B.: C:\Trouble\Acro – nicht den Namen der DLL Datei ergänzen!) . Nach einem Doppelklick auf das Programm sollte er Ihre besondere DLL Version nutzen und das Programm sollte problemlos laufen.


Kommentare

2 Antworten zu „Lösung zu Problemen mit unterschiedlichen DLL Versionen bei Windows Programmen“

  1. Kann man eigentlich nachträglich DLLs ins (bereits bestehende) executable einlinken ?

    (vom Vorhandensein der Sourcen kann man ja leider in der Windows-Welt nicht ausgehen ;-o).

    1. Ohne Quelle, erst einmal nein.
      Sie bräuchten einen Disassembler, der aus den 0en und 1en erst einmal wieder einen lesbaren Assembler Code generiert. Das funktioniert, aber eher schlecht als recht. Das was automatisch übersetzt wurde muss man ähnlich wie wenn man eine Englische Website von Google ins Deutsche übersetzt nach bearbeitet werden, damit der Code wieder assembliert (in Maschinencode zurück übersetzte) werden kann und dann auch noch funktioniert. Dann könnten Sie eine zusätzliche DLL einbinden unter manueller Abänderung aller Sprungziele im Programmcode. Wenn Sie etwas einfügen verschiebt sich ja alles. Kurzum der Aufwand wäre immens.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert