Condividi tramite


Funzione SHGetKnownFolderPath (shlobj_core.h)

Recupera il percorso completo di una cartella nota identificata dalla cartella 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 a 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 KNOWN_FOLDER_FLAG .

[in, optional] hToken

Tipo: HANDLE

Token di accesso che rappresenta un determinato utente. 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, è necessario includere anche 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.

Se si assegna il parametro hToken , il valore -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 Utente predefinito 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, viene restituito "C:\Users" 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 Descrizione
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.

Commenti

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

Requisiti

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

Vedi anche

IKnownFolder::GetPath

Esempio di cartelle note

SHGetKnownFolderIDList

SHSetKnownFolderPath