Condividi tramite


Funzione SHGetKnownFolderPath (shlobj_core.h)

Recupera il percorso completo di una cartella nota identificata dall'OGGETTO KNOWNFOLDERID della cartella.

Sintassi

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

Parametri

[in] rfid

Tipo: REFKNOWNFOLDERID

Riferimento all'oggetto KNOWNFOLDERID che identifica la cartella.

[in] dwFlags

Tipo: DWORD

Flag che specificano opzioni di recupero speciali. Questo valore può essere 0; in caso contrario, uno o più valori di KNOWN_FOLDER_FLAG .

[in, optional] hToken

Tipo: HANDLE

Token di accesso che rappresenta un utente specifico. Se questo parametro è NULL, ovvero l'utilizzo più comune, la funzione richiede la cartella nota per l'utente corrente.

Richiedere la cartella di un utente specifico passando l'hToken di tale utente. Questa operazione viene in genere eseguita nel contesto di un servizio con privilegi sufficienti per recuperare il token di un determinato utente. Tale token deve essere aperto con diritti di TOKEN_QUERY e TOKEN_IMPERSONATE . In alcuni casi, è anche necessario includere TOKEN_DUPLICATE. Oltre a passare l'hToken dell'utente, è necessario montare l'hive del Registro di sistema di tale utente specifico. Per altre informazioni sui problemi di controllo di accesso, vedere Controllo di accesso .

L'assegnazione del parametro hToken a un valore di -1 indica l'utente predefinito. Ciò consente ai client di SHGetKnownFolderPath di trovare i percorsi delle cartelle (ad esempio la cartella Desktop ) per l'utente predefinito. Il profilo utente predefinito viene duplicato quando viene creato un nuovo account utente e include cartelle speciali come Documenti e Desktop. Tutti gli elementi aggiunti alla cartella Default User vengono visualizzati anche in qualsiasi nuovo account utente. Si noti che l'accesso alle cartelle utente predefinite richiede privilegi di amministratore.

[out] ppszPath

Tipo: PWSTR*

Quando termina, questo metodo contiene l'indirizzo di un puntatore a una stringa Unicode con terminazione Null che specifica il percorso della cartella nota. Il processo chiamante è responsabile della liberazione di questa risorsa dopo che non è più necessaria chiamando CoTaskMemFree, indipendentemente dal fatto che SHGetKnownFolderPath abbia esito positivo o negativo. Il percorso restituito non include una barra rovesciata finale. Ad esempio, "C:\Users" viene restituito anziché "C:\Users\".

Valore restituito

Tipo: HRESULT

Restituisce S_OK in caso di esito positivo o un valore di errore, incluso quanto segue:

Codice restituito Description
E_FAIL
Tra le altre cose, questo valore può indicare che il parametro rfid fa riferimento a un KNOWNFOLDERID che non ha un percorso (ad esempio una cartella contrassegnata come KF_CATEGORY_VIRTUAL).
E_INVALIDARG
Tra le altre cose, questo valore può indicare che il parametro rfid fa riferimento a un KNOWNFOLDERID che non è presente nel sistema. Non tutti i valori KNOWNFOLDERID sono presenti in tutti i sistemi. Usare IKnownFolderManager::GetFolderIds per recuperare il set di valori KNOWNFOLDERID per il sistema corrente.

Osservazioni:

Questa funzione sostituisce SHGetFolderPath. Questa funzione precedente è ora semplicemente un wrapper per SHGetKnownFolderPath.

Requisiti

Requisito Value
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Header shlobj_core.h (includere Shlobj.h)
Library OneCore.Lib
DLL Shell32.dll (versione 6.0.6000 o successiva)

Vedere anche

IKnownFolder::GetPath

Esempio di cartelle note

SHGetKnownFolderIDList

SHSetKnownFolderPath