Ich weiß nicht, warum der Explorer solche Umbenennungen verbietet, aber es ist wahrscheinlich eine Lokalisierungsfunktion.
Verschiedene Teile des Explorers verwenden die @<DllName>,<ResourceID>
Syntax, um lokalisierten Text dynamisch zu laden - siehe Umleitung der Registrierungszeichenfolge . (Beachten Sie, dass die Ressourcen-ID immer eine Dezimalzahl ist, oft negativ.)
Die Beschreibung für .lnk-Verknüpfungen in der Registrierung lautet zum Beispiel
@shell32.dll,-4153
"Lade Zeichenfolge mit ID -4153 aus der Datei shell32.dll". Da DLL-Dateien für jede unterstützte Sprache eine separate Ressourcentabelle enthalten können, wird die resultierende Beschreibung in die Anzeigesprache übersetzt, in der Windows eingestellt ist.In ähnlicher Weise Ihren Desktop; Unterlagen; Bilder; ... Verzeichnisse haben eine versteckte
desktop.ini
Datei mit:[.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 IconResource=%SystemRoot%\system32\imageres.dll,-183
Wenn der Explorer diese Datei sieht, wird der Ordner nicht nur als "Desktop" angezeigt, sondern der übersetzte Name.
Die Verwendung der Umleitungssyntax in einem tatsächlichen Datei- / Verzeichnisnamen führt zu nichts, aber ich vermute, es war verboten, verschiedene Fehler zu vermeiden, falls ein Programm die Namen "real" und "display" auf irgendeine Weise mischt. (Wenn Sie beispielsweise ein Verzeichnis benennen @shell32.dll,-21769
, kann es vorkommen, dass ein fehlerhaftes Programm Desktop
stattdessen versucht, auf den Zugriff zuzugreifen . Dies kann sogar zu Sicherheitsproblemen führen.)
Das wäre also ähnlich zu verschiedenen anderen Namen, die Windows erlaubt, aber Explorer nicht (z. B. .foo
eine normale "versteckte Datei" für Unixen, kann aber von einigen Windows-Programmen mit einer nameless-Datei (nur für die Erweiterung) verwechselt werden).