次の方法で共有


SHSetFolderPathA 関数 (shlobj_core.h)

廃止。 CSIDL によって識別されるシステム フォルダーに新しいパスを割り当てます。

構文

HRESULT SHSetFolderPathA(
  [in] int    csidl,
  [in] HANDLE hToken,
  [in] DWORD  dwFlags,
  [in] LPCSTR pszPath
);

パラメーター

[in] csidl

型: int

CSIDL パスを設定するフォルダーを識別する値です。 物理フォルダーのみが有効です。 仮想フォルダーが指定されている場合、この関数は失敗します。

CSIDL_FLAG_DONT_UNEXPAND 値を CSIDL に追加して、指定されたとおりに文字列がレジストリに確実に書き込まれるようにします。 CSIDL_FLAG_DONT_UNEXPAND フラグが含まれていない場合は、パスの一部を、%USERPROFILE%などの環境文字列に置き換えることができます。

[in] hToken

型: HANDLE

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

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

[in] dwFlags

型: DWORD

引っ込み思案。 0 に設定する必要があります。

[in] pszPath

型: LPCTSTR

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

戻り値

型: HRESULT

次のような標準 HRESULT コードを返します。

リターン コード 形容
S_OK
フォルダーのパスが正常に更新されました。
E_INVALIDARG
いくつかのエラー条件により、次のようなこの値が返されます。
  • csidl 値が無効です。
  • csidl 値は仮想フォルダーを参照しません。
  • csidl 値はシステム フォルダーを参照しません。
  • csidl 値は、名前の変更や移動ができないフォルダーを参照します。
  • dwFlags 値は 0 (ゼロ) ではありません。
  • pszPath 値は NULLです。
  • pszPath 値 指す文字列は、長さ 0 の空の文字列 ("") です。

備考

Windows Vista の時点で、この関数は単に SHSetKnownFolderPathラッパーです。 CSIDL 値は、関連 KNOWNFOLDERID に変換され、SHSetKnownFolderPath 呼び出されます。 新しいアプリケーションでは、旧バージョンの CSIDL システムではなく、既知のフォルダー システムを使用する必要があります。これは下位互換性のためにのみサポートされています。
 
SHSetFolderPath は、Shell32.dllから名前によってエクスポートされません。 この関数を使用するには、SHSetFolderPathA (ANSI 文字列の場合) には序数 231、関数ポインターを取得するには SHSetFolderPathW (Unicode 文字列の場合) の序数 232 GetProcAddress を呼び出す必要があります。

フォルダー名には ANSI では表現できない Unicode 文字が含まれている可能性があるため、パスは Unicode 文字列として表現することをお勧めします。

手記

shlobj_core.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして SHSetFolderPath を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー shlobj_core.h (Shlobj.h、Shlobj_core.h を含む)
ライブラリ Shell32.lib
DLL Shell32.dll (バージョン 5.0 以降)

関連項目

IKnownFolder::SetPath