Freigeben über


SHGetKnownFolderPath-Funktion (shlobj_core.h)

Ruft den vollständigen Pfad eines bekannten Ordners ab, der durch die KNOWNFOLDERID des Ordners identifiziert wird.

Syntax

HRESULT SHGetKnownFolderPath(
  [in]           REFKNOWNFOLDERID rfid,
  [in]           DWORD            dwFlags,
  [in, optional] HANDLE           hToken,
  [out]          PWSTR            *ppszPath
);

Die Parameter

[in] rfid

Typ: REFKNOWNFOLDERID

Ein Verweis auf die KNOWNFOLDERID , die den Ordner identifiziert.

[in] dwFlags

Art: DWORD

Flags, die spezielle Abrufoptionen angeben. Dieser Wert kann 0 sein; andernfalls ein oder mehrere der KNOWN_FOLDER_FLAG Werte.

[in, optional] hToken

Typ: HANDLE

Ein Zugriffstoken , das einen bestimmten Benutzer darstellt. Wenn dieser Parameter NULL ist, was die am häufigsten verwendete Verwendung ist, fordert die Funktion den bekannten Ordner für den aktuellen Benutzer an.

Fordern Sie den Ordner eines bestimmten Benutzers an, indem Sie das hToken dieses Benutzers übergeben. Dies erfolgt in der Regel im Kontext eines Diensts, der über ausreichende Berechtigungen zum Abrufen des Tokens eines bestimmten Benutzers verfügt. Dieses Token muss mit TOKEN_QUERY - und TOKEN_IMPERSONATE Rechten geöffnet werden. In einigen Fällen müssen Sie auch TOKEN_DUPLICATE einschließen. Zusätzlich zum Übergeben des hTokens des Benutzers muss die Registrierungsstruktur dieses bestimmten Benutzers bereitgestellt werden. Weitere Informationen zu Problemen mit der Zugriffssteuerung finden Sie unter "Zugriffssteuerung ".

Wenn Sie den hToken-Parameter einem Wert von -1 zuweisen, wird der Standardbenutzer angegeben. Dadurch können Clients von SHGetKnownFolderPath Ordnerspeicherorte (z. B. den Desktopordner ) für den Standardbenutzer suchen. Das Benutzerprofil des Standardbenutzers wird dupliziert, wenn ein neues Benutzerkonto erstellt wird, und enthält spezielle Ordner wie Dokumente und Desktop. Alle Elemente, die dem Standardbenutzerordner hinzugefügt werden, werden auch in einem neuen Benutzerkonto angezeigt. Beachten Sie, dass für den Zugriff auf die Standardbenutzerordner Administratorrechte erforderlich sind.

[out] ppszPath

Typ: PWSTR*

Wenn diese Methode zurückgegeben wird, enthält sie die Adresse eines Zeigers auf eine mit Null beendete Unicode-Zeichenfolge, die den Pfad des bekannten Ordners angibt. Der Aufrufvorgang ist für das Freigeben dieser Ressource verantwortlich, sobald sie nicht mehr benötigt wird, indem CoTaskMemFree aufgerufen wird, unabhängig davon, ob SHGetKnownFolderPath erfolgreich ist oder nicht. Der zurückgegebene Pfad enthält keinen nachgestellten umgekehrten Schrägstrich. Beispielsweise wird "C:\Users" anstelle von "C:\Users\" zurückgegeben.

Rückgabewert

Typ: HRESULT-

Gibt S_OK zurück, wenn dies erfolgreich ist, oder einen anderen Fehlerwert, einschließlich der folgenden:

Rückgabecode Description
E_FAIL
Unter anderem kann dieser Wert darauf hinweisen, dass der RFID-Parameter auf eine KNOWNFOLDERID verweist, die keinen Pfad aufweist (z. B. einen Ordner, der als KF_CATEGORY_VIRTUAL markiert ist).
E_INVALIDARG
Unter anderem kann dieser Wert darauf hinweisen, dass der RFID-Parameter auf eine KNOWNFOLDERID verweist, die nicht auf dem System vorhanden ist. Nicht alle KNOWNFOLDERID-Werte sind auf allen Systemen vorhanden. Verwenden Sie IKnownFolderManager::GetFolderIds , um den Satz von KNOWNFOLDERID-Werten für das aktuelle System abzurufen.

Bemerkungen

Diese Funktion ersetzt SHGetFolderPath. Diese ältere Funktion ist jetzt einfach ein Wrapper für SHGetKnownFolderPath.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Nur Desktop-Apps]
Zielplattform Fenster
Header shlobj_core.h (einschließlich Shlobj.h)
Library OneCore.Lib
DLL Shell32.dll (Version 6.0.6000 oder höher)

Siehe auch

IKnownFolder::GetPath

Beispiel für bekannte Ordner

SHGetKnownFolderIDList

SHSetKnownFolderPath