SHGetKnownFolderPath 関数 (shlobj_core.h)

フォルダーの KNOWNFOLDERID によって識別される既知のフォルダーの完全パスを取得します。

構文

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

パラメーター

[in] rfid

型: REFKNOWNFOLDERID

フォルダーを識別する KNOWNFOLDERID への参照。

[in] dwFlags

型: DWORD

特別な取得オプションを指定するフラグ。 この値は 0 にすることができます。それ以外の場合は、KNOWN_FOLDER_FLAG値の 1 つ以上。

[in, optional] hToken

型: HANDLE

特定のユーザーを表す アクセス トークン 。 このパラメーターが NULL (最も一般的な使用法) の場合、関数は現在のユーザーの既知のフォルダーを要求します。

そのユーザーの hToken を渡して、特定のユーザーのフォルダーを要求します。 これは通常、特定のユーザーのトークンを取得するのに十分な特権を持つサービスのコンテキストで行われます。 そのトークンは、 TOKEN_QUERYTOKEN_IMPERSONATE 権限で開く必要があります。 場合によっては、 TOKEN_DUPLICATEも含める必要があります。 ユーザーの hToken を渡すことに加えて、その特定のユーザーのレジストリ ハイブをマウントする必要があります。 アクセス制御の問題の詳細については、「Access Control」を参照してください。

hToken パラメーターに -1 の値を割り当てると、既定のユーザーが示されます。 これにより、 SHGetKnownFolderPath のクライアントは、既定のユーザーのフォルダーの場所 ( デスクトップ フォルダーなど) を検索できます。 既定のユーザー ユーザー プロファイルは、新しいユーザー アカウントが作成されると複製され、 ドキュメントデスクトップなどの特別なフォルダーが含まれます。 [既定のユーザー] フォルダーに追加されたすべての項目は、新しいユーザー アカウントにも表示されます。 既定のユーザー フォルダーへのアクセスには管理者特権が必要であることに注意してください。

[out] ppszPath

種類: PWSTR*

このメソッドが戻るとき、 には、既知のフォルダーのパスを指定する null で終わる Unicode 文字列へのポインターのアドレスが含まれます。 呼び出し元のプロセスでは、SHGetKnownFolderPath が成功するかどうかに関係なく、CoTaskMemFree を呼び出して不要になったら、このリソースを解放する必要があります。 返されるパスには、末尾の円記号は含まれません。 たとえば、"C:\Users\ " ではなく "C:\Users" が返されます。

戻り値

種類: HRESULT

成功した場合はS_OKを返し、それ以外の場合は次のようなエラー値を返します。

リターン コード 説明
E_FAIL
特に、この値は、 rfid パラメーターがパスを持たない KNOWNFOLDERID ( KF_CATEGORY_VIRTUALとしてマークされたフォルダーなど) を参照していることを示している可能性があります。
E_INVALIDARG
特に、この値は 、rfid パラメーターがシステムに存在しない KNOWNFOLDERID を 参照していることを示している可能性があります。 すべての KNOWNFOLDERID 値がすべてのシステムに存在するわけではありません。 現在のシステムの KNOWNFOLDERID 値のセットを取得するには、IKnownFolderManager::GetFolderIds を使用します。

解説

この関数は 、SHGetFolderPath を置き換えます。 その古い関数は、 SHGetKnownFolderPath のラッパーになりました。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlobj_core.h (Shlobj.h を含む)
[DLL] Shell32.dll (バージョン 6.0.6000 以降)

関連項目

IKnownFolder::GetPath

既知のフォルダーのサンプル

SHGetKnownFolderIDList

SHSetKnownFolderPath