Ist es möglich, aus einer Batch-Datei oder einem cmd-Skript ein Verzeichnis zum DLL-Suchpfad hinzuzufügen?

9

MSDN sagt, dass die Funktion SetDllDirectory () verwendet werden kann, ein Verzeichnis in das einfügen DLL-Suchpfad Diese Funktion kann aus einer Batch-Datei oder cmd Skript zugegriffen werden, vielleicht über mit cscript ?

Das Ziel ist, unsere Entwicklungs Version einer DLL, bevor ein älteren usw. in% windir% bestehende vorge gefunden zu haben, ohne ein Programm nur für das schreiben.

Vielen Dank im Voraus für Ihre Zeit und Ihre Gedanken.

    
matt wilkie 05.02.2009, 22:16
quelle

3 Antworten

7

Sie können die DLL im selben Pfad wie die ausführbare Datei platzieren, die zuerst vor% WINDIR% gesucht wird. Es gibt keine Möglichkeit, SetDllDirectory direkt aus einer Batch-Datei aufzurufen.

Sie können jedoch Ihr DLL-Verzeichnis in die Variable% PATH% einfügen, und Windows wird dann die DLL dort finden.

%Vor%     
martin jakubik 09.11.2016, 15:07
quelle
10
  

Das Ziel ist unsere Entwicklung   Version einer DLL vor gefunden a   Vorbestehendes älteres in% WINDIR%   usw. ohne ein Programm schreiben zu müssen   nur dafür.

Wenn sich die DLL nicht im selben Ordner wie die ausführbare Datei befindet, sucht Windows die Datei in den Ordnern, die im Systempfad angegeben sind. Alles, was Sie tun müssen, ist Ihren Ordner am Anfang des Pfades zu platzieren.

Sie können dies mit dem folgenden Batch-Befehl tun:

%Vor%

Wenn Ihr Pfad Leerzeichen enthält, müssen Sie den folgenden Stapelbefehl verwenden:

%Vor%

Beachten Sie jedoch, dass diese Pfadänderung nur für den PATH der aktuellen Konsolensitzung vorgenommen wird. Wenn Sie die Konsole schließen und erneut öffnen, gehen diese Pfadänderungen verloren.

    
jussij 05.02.2009 23:43
quelle
4

Um Konflikte über die DLL-Suchreihenfolge zu klären (in den Kommentaren zu @ jussijs Antwort), hier ist die Liste, die aus dem Microsoft-Dokument stammt:

Wenn SafeDllSearchMode aktiviert ist, lautet die Suchreihenfolge wie folgt:

  1. Das Verzeichnis, aus dem die Anwendung geladen wurde.
  2. Das Systemverzeichnis. Verwenden Sie die Funktion GetSystemDirectory , um den Pfad dieses Verzeichnisses abzurufen.
  3. Das 16-Bit-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses erhält, aber es wird gesucht.
  4. Das Windows-Verzeichnis. Verwenden Sie die Funktion GetWindowsDirectory , um die Funktion zu erhalten Pfad dieses Verzeichnisses.
  5. Das aktuelle Verzeichnis.
  6. Die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind. Beachten Sie, dass dies nicht den pro-Anwendungspfad enthält, der von dem App Paths Registrierungsschlüssel angegeben wird. Der App Paths-Schlüssel wird nicht verwendet, wenn der DLL-Suchpfad berechnet wird.

Wenn SafeDllSearchMode deaktiviert ist, lautet die Suchreihenfolge wie folgt:

  1. Das Verzeichnis, aus dem die Anwendung geladen wurde.
  2. Das aktuelle Verzeichnis.
  3. Das Systemverzeichnis. Verwenden Sie die Funktion GetSystemDirectory , um den Pfad dieses Verzeichnisses abzurufen.
  4. Das 16-Bit-Systemverzeichnis. Es gibt keine Funktion, die den Pfad dieses Verzeichnisses erhält, aber es wird gesucht.
  5. Das Windows-Verzeichnis. Verwenden Sie die Funktion GetWindowsDirectory , um den Pfad dieses Verzeichnisses abzurufen.
  6. Die Verzeichnisse, die in der PATH-Umgebungsvariablen aufgeführt sind. Beachten Sie, dass dies nicht den pro-Anwendungspfad enthält, der von dem App Paths Registrierungsschlüssel angegeben wird. Der App Paths-Schlüssel wird nicht verwendet, wenn der DLL-Suchpfad berechnet wird.

Siehe Ссылка

    
JellicleCat 20.08.2014 14:42
quelle

Tags und Links