Verwenden von Junctions in PATH

421
T.E.D.

Ich habe ein paar Mal bemerkt, dass es so aussieht, als ob ich keine NTFS-Junctions unter% SystemRoot% verwenden kann, den folgenden Dateipfad in meinen PFAD stellen und ihn für die DLL-Suche verwenden kann.

Wenn ich beispielsweise das "bin" -Verzeichnis eines Anbieters als Abzweigung unter "% PATH%" platziere, kann ich ausführbare Dateien dort ausführen, indem ich den Namen der ausführbaren Datei in die Befehlszeile (ohne Pfad) eingeben, aber Sie rufen sofort einen Dialog auf, den die DLLs, die die ausführbare Datei aus demselben Verzeichnis verwendet, nicht finden können.

Wenn ich stattdessen den Verzeichnispfad "bin" des Anbieters direkt in% PATH% setze, laufen sie einwandfrei.

Was genau ist hier los? Gibt es einen guten Grund dafür oder ist es nur ein Fehler?

0

1 Antwort auf die Frage

1
Appleoddity

Sie vergessen den Dateisystem-Redirector .

Wenn das Programm, das Sie ausführen, 32-Bit ist, c:\windows\system32leitet es still an c:\windows\SysWOW64.

Sie haben den bin-Ordner nicht unter syswow64 abgelegt und sind daher nicht vorhanden.

Überhaupt kein Fehler. Nur Windows-Standardverhalten, das Sie kennen sollten.

Das ist ein sehr guter Punkt (also habe ich Sie angehoben). Aber genau das habe ich getan. Insbesondere gibt es eine Junction, die auf den gleichen Ordner (der nur 32-Bit-Exes und DLLs enthält) unter% SystemRoot% \ system32 \ und% SystemRoot% \ SysWOW64 \ verweist. Ich habe * beide * Ordner zu PATH jic hinzugefügt. Die Exes können auf diese Weise gefunden werden, aber nicht die DLLs. T.E.D. vor 6 Jahren 0
... Mein * Verdacht * ist, dass MS DLL-Lookups durch Junctions deaktiviert hat (möglicherweise nur% SystemRoot% Junctions?), um Betriebssystemangriffe zu verhindern, aber ich kann nichts finden, das dies sagt. T.E.D. vor 6 Jahren 0