Bekannte Ordner

Windows Vista führt neue Speicherszenarien und einen neuen Benutzerprofilnamespace ein. Um diese neuen Faktoren zu beheben, wurde das ältere System, das auf Standardordner durch einen CSIDL- Wert verweist, ersetzt. Ab Windows Vista werden diese Ordner durch einen neuen Satz von GUID-Werten namens "Bekannte Ordner-IDs" referenziert.

Das System für bekannte Ordner bietet folgende Vorteile:

  • Unabhängige Softwareanbieter (ISVs) können den Satz bekannter Ordner-IDs um eigene erweitern. Sie können Ordner definieren, ihnen IDs zuweisen und mit dem System registrieren. CSIDL-Werte konnten nicht erweitert werden.
  • Alle bekannten Ordner in einem System können aufgezählt werden. Keine API stellte diese Funktionalität für CSIDL-Werte bereit. Weitere Informationen finden Sie unter IKnownFolderManager::GetFolderIds.
  • Ein bekannter Ordner, der von einem ISV hinzugefügt wird, kann benutzerdefinierte Eigenschaften hinzufügen, mit denen er seinen Zweck und seine beabsichtigte Verwendung erklären kann.
  • Viele bekannte Ordner können an neue Speicherorte umgeleitet werden, einschließlich Netzwerkspeicherorte. Unter dem CSIDL-System können nur die Ordner "Eigene Dokumente" umgeleitet werden.
  • Bekannte Ordner können benutzerdefinierte Handler für die Verwendung beim Erstellen oder Löschen aufweisen.

Das CSIDL-System und die APIs, die CSIDL-Werte verwenden, werden weiterhin aus Kompatibilitätsgründen unterstützt. Es wird jedoch nicht empfohlen, sie in einer neuen Entwicklung zu verwenden.

Important

Verwenden Sie für neuen Code immer SHGetKnownFolderPath mit KNOWNFOLDERID-Konstanten . Die älteren SHGetFolderPath - und CSIDL-Werte sind veraltet und sollten nicht in neuen Anwendungen verwendet werden.

Beim Aufruf von SHGetKnownFolderPath:

  • Sie müssenCoInitializeEx aufrufen, bevor Sie diese Funktion verwenden (COM muss im aufrufenden Thread initialisiert werden).
  • Wenn Sie fertig sind, müssen Sie die zurückgegebene Zeichenfolge mit CoTaskMemFree freigeben. Andernfalls kommt es zu einem Speicherleck.
  • Verwenden Sie für .NET Anwendungen Environment.GetFolderPath oder Windows. Storage.KnownFolders (WinRT) anstelle von P/Invoking-Shellfunktionen direkt.

In den folgenden Themen werden die Besonderheiten des Systems für bekannte Ordner erläutert.

Auf den folgenden Referenzseiten werden die Win32-Funktionen für bekannte Ordner erläutert, die verwendet werden können, um den Speicherort bekannter Ordner abzurufen oder an einen neuen Speicherort umzuleiten. Diese Funktionen ersetzen ältere Win32-Funktionen. Die neuen Funktionen werden bereitgestellt, um den alten Funktionen ein entsprechendes Verhalten zu verleihen, aber jede neue Funktion wird auch von einer COM-API (Component Object Model) dupliziert.

Neue Funktion Ersetzt COM-Entsprechung
SHGetKnownFolderPath SHGetFolderPath IKnownFolder::GetPath
SHGetKnownFolderIDList SHGetFolderLocation IKnownFolder::GetIDList
SHSetKnownFolderPath SHSetFolderPath IKnownFolder::SetPath

 

Auf den folgenden Referenzseiten werden die COM-APIs für bekannte Ordner erläutert, die alle Funktionen der oben aufgeführten Win32-APIs bereitstellen, sowie die Möglichkeit zum Aufzählen aller bekannten Ordner, zum Zugreifen auf bekannte Ordnereigenschaften und zum Erweitern des Standardsatzes bekannter Ordner hinzufügen.

Ein C++-Beispiel, das die bekannten Ordner-APIs veranschaulicht, ist im Windows Software Development Kit (SDK) enthalten. Nachdem Sie das Windows SDK auf Ihrem Computer installiert haben, finden Sie das Beispiel unter %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\KnownFolders.

beispiel für bekannte Ordner