SHSetKnownFolderPath 関数 (shlobj_core.h)

既知のフォルダーを新しい場所にリダイレクトします。

構文

HRESULT SHSetKnownFolderPath(
  [in] REFKNOWNFOLDERID rfid,
  [in] DWORD            dwFlags,
  [in] HANDLE           hToken,
  [in] PCWSTR           pszPath
);

パラメーター

[in] rfid

型: REFKNOWNFOLDERID

既知のフォルダーを識別する GUID 。

[in] dwFlags

型: DWORD

0 または次の値。

KF_FLAG_DONT_UNEXPAND

このフラグが設定されている場合、 pszPath によって参照されるパスの一部は、 %USERPROFILE%などの環境文字列によって表される場合があります。

[in] hToken

型: HANDLE

特定のユーザーを表すために使用される アクセス トークン 。 通常、このパラメーターは NULL に設定されます。この場合、関数はフォルダーの現在のユーザーのインスタンスにアクセスしようとします。 ただし、複数のユーザーを持つことができますが、1 人のユーザーに属していると見なされるフォルダーに対して hToken に値を割り当てる必要がある場合があります。 この種類の最も一般的に使用されるフォルダーは Documents です。

hToken が null 以外の場合、呼び出し元のアプリケーションは正しい偽装を担当します。 TOKEN_QUERYやTOKEN_IMPERSONATEなど、特定のユーザーに適切なセキュリティ特権が必要であり、ユーザーのレジストリ ハイブが現在マウントされている必要があります。 アクセス制御の問題の詳細については、「アクセス制御」を参照してください。

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

[in] pszPath

型: PCWSTR

フォルダーの新しいパスへのポインター。 これは、長さがMAX_PATHの null で終わる Unicode 文字列です。 このパスの長さを 0 にすることはできません。

戻り値

型: HRESULT

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

リターン コード Description
E_INVALIDARG
特に、この値は 、rfid パラメーターがシステムに存在しない KNOWNFOLDERID を 参照していることを示すことができます。 すべての KNOWNFOLDERID 値がすべてのシステムに存在するわけではありません。 IKnownFolderManager::GetFolderIds を使用して、現在のシステムの KNOWNFOLDERID 値のセットを取得します。

注釈

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

この関数の呼び出し元には管理者特権が必要です。 この関数をパブリック既知のフォルダーで呼び出すには、呼び出し元に管理者特権が必要です。 ユーザーごとの既知のフォルダーの場合、呼び出し元にはユーザー特権のみが必要です。

一部の既知のフォルダー (ドキュメント フォルダーなど) は、ユーザー単位です。 すべてのユーザーは、 ドキュメント フォルダーのパスが異なります。 hToken が NULL の場合、API は呼び出し元のアプリケーションのフォルダーのインスタンス (現在のユーザーのインスタンス) にアクセスしようとします。 hToken が有効なユーザー トークンの場合、API はこのトークンを使用してユーザーの偽装を試み、そのユーザーのインスタンスにアクセスしようとします。

この関数は、 KF_CATEGORY_FIXED および KF_CATEGORY_VIRTUALの種類のフォルダーでは呼び出すことができません。

KF_CATEGORY_COMMON型のフォルダーでこの関数を呼び出すには、呼び出し元のアプリケーションが昇格された特権で実行されている必要があります。

Requirements

Requirement 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
Header shlobj_core.h (Shlobj.h を含む)
Library OneCore.Lib
DLL Shell32.dll (バージョン 6.0.6000 以降)

こちらも参照ください

IKnownFolder::GetPath

IKnownFolder::SetPath

IKnownFolderManager::Redirect

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

SHGetKnownFolderIDList

SHGetKnownFolderPath