Windows Confidential

Junction Dysfunction

Raymond Chen

Was ist mit dieser Verbindungen, die sich scheinbar nicht funktioniert? Oh, arbeiten die Benutzer alle Rechte - einfach nicht die Möglichkeit, die Ihrer Meinung nach.

Windows Vista und Windows 7 nutzen ein Dateisystem-Feature durch einschließlich Verbindungen zu Systemverzeichnisse, die legacy-Namen als Verknüpfungen bezeichnet. Wenn Sie versuchen, aus dem Explorer oder den Befehl Dir Issuea zu diesen Ordnern zu navigieren, jedoch erhalten Sie nur über eine -Fehler Zugriff verweigert. Natürlich hat Microsoft die Verbindungen, um Kompatibilität mit Anwendungen bereitzustellen, die die MSDN-Anleitungen und stattdessen hartcodierte Pfade auf verschiedene bekannte Dateisystem-Speicherorte ignoriert. Warum, dann funktionieren diese Verbindungen nicht bei dem Versuch, die Sie verwenden?

Tatsächlich funktionieren für die vorgesehenen Zwecke – jedoch nicht der beabsichtigte Zweck, Befehlszeilen Zugriff oder die Navigation von Explorer. Zurückspulen, um anzuzeigen, wie wir in dieser Situation zustande gekommen, lassen Sie uns die Uhr zu einem Jahrzehnt.

In den Anfangszeiten von Windows NT ist wie Sie aufgerufen wurde, Benutzerprofile im Verzeichnis C:\WINNT\Profiles befand. Ja, damals der Standardname für das Windows-Verzeichnis wurde und WINNT. Während der Entwicklung von Windows 2000 aufgefordert Sicherheitsüberlegungen und Feedback von Unternehmenskunden die Entwickler des Betriebssystems so verschieben Sie Profile-Verzeichnis des Benutzers aus der Windows-Verzeichnis, so dass letztere Sicherheitseinstellungen des verbessert werden konnte.

Vor der Änderung, die Windows-Verzeichnis – die wichtigsten Verzeichnis im System – war diese Insel des Insecurity in der Mitte. Personen, die neue, strengere Sicherheit für das gesamte Verzeichnis anwenden wollten mussten, um das Unterverzeichnis Profile tiptoe, damit Sie das System für alle Benutzer versehentlich sperren landen. Verschieben die Profile aus der Windows-Verzeichnis wird das Problem gelöst.

Verschieben den Ordner bereitgestellten eine hervorragende Möglichkeit, um es aussagekräftigere umzubenennen. Eine der frühen Auswahlmöglichkeiten Dokumente und Einstellungen wurde, aber das kaufmännische und-Zeichen verursacht eine große Anzahl von Problemen der Anwendungskompatibilität. Beispielsweise einige Programme versehentlich das kaufmännische und-Zeichen als Zugriffstaste Marker interpretiert und gewickelt, bis das Verzeichnis als Dokumente _Settings (hinter die in Menüs und Dialogfelder, der die Zugriffstaste unterstrichen verwendete-Konvention) anzeigen.

Windows 2000 ausgeglichen, der auf Dokumente und Einstellungen , die einen verhältnismäßig beschreibenden Namen für das Verzeichnis bereitgestellt, aber andere Faktoren berücksichtigt werden konnte. Zum einen vorgenommen embedded-Bereich den komplizierter Pfad einzugeben, wegen der Konstanten Notwendigkeit Anführungszeichen anzuwenden. Außerdem wurde einfach Länge des Namens ein Hindernis, insbesondere, da es in Ausschneiden der

MAX_PATH

Grenze für die Win32-Pfadnamen. Diese und andere Faktoren aufgefordert, das Windows-Team die verschiedenen Systemverzeichnisse erneut in Vista neu zu organisieren und die Anordnung enthält Vorwärts in Windows 7.

Wenn die Verzeichnisse zum zweiten Mal verschoben, hinterlassen Verbindungen, die Anwendungen helfen, die hartcodierte Pfade auf diese Verzeichnisse mussten, wenn Sie Funktionen wie z. B. verwendet haben sollten Windows

SHGetFolderPath

und

GetProfilesDirectory

(oder, wenn Sie einen Typ Skripterstellung der Person, die

Shell.Application.NameSpace

Methode wieder in der Ausgabe November 2005 gesehen).

Wenn eine Anwendung, versucht für den Zugriff auf die Datei

C:\Dokumente und Settings\username\Start %USERPROFILE%\Startmenü\Programme\Internet Explorer.lnk

den Verknüpfungen am installiert

Dokumente und Einstellungen

und am

Startmenü

den Aufruf an den richtigen neuen Speicherort führt die für ein lokales Profil nicht servergespeichert jetzt ist

C:\Users\username\AppData\Roaming\Microsoft\Windows\Start %USERPROFILE%\Startmenü\Programme\Internet Explorer.lnk

Natürlich sollte Programmierer nicht hartcodieren am neuen Speicherort mehr als Sie das alte Konto hartcodierte sollten haben – Sie sollten die entsprechenden Funktionen für das Ermitteln der Speicherorte von bekannten Ordner verwenden.

Natürlich können Sie eine neue Verkaufschance ein neues Problem erstellen: Eine Anwendung, die nicht mit Verbindungen vertraut ist möglicherweise in einer Endlosschleife festsitzt, wenn er versucht, eine rekursive Verzeichnis-Tree Walk durchgeführt. Um dies zu verhindern, die Verknüpfungen Kompatibilität Directory-Traversal-Angriffe ermöglichen jedoch explizit verweigern Berechtigung auflisten, Inhalte auflisten: Wenn Sie versuchen, aus dem Explorer oder der Eingabeaufforderung auf diese Ordner zu navigieren, erhalten Sie eine -Fehler Zugriff verweigert.

Die symbolischen Verknüpfungen Kompatibilität gewähren genügend erreichen Ihr Ziel Bereitstellen der Kompatibilität für ältere Anwendungen, die zum Hartcodieren Verzeichnisnamen unwisely ausgewählt haben. Aber Sie nicht genügend Rope, damit diese älteren Anwendungen selbst ernsthaften Schaden anrichten liefern. auflisten, Inhalte-blockieren verfügt außerdem über den erfreulich Nebeneffekt einer ansprechenden Belästigung überfüllen für neue Programmierer, die Tradition dieser älteren Anwendungen weiterhin dazu verleitet werden möglicherweise entfernt. Werden diese Technik kann verwendet, um Personen in die richtige Richtung lenken? Nur dann wird informieren.

 

Raymond Chen Raymnond-Website Old New Thing, und seinem gleichnamiges Buch (Addison-Wesley, 2007) befassen sich mit der Windows-Geschichte, Win32-Programmierung und salty Soymilk.

Verknüpften Inhalt

Windows Confidential: Codierung ist keine Verschlüsselung

Windows Confidential: „Verschönerte“ Windows-Dateinamen

Windows Confidential: Zwischengespeicherte Anmeldeinformationen