SHGetKnownFolderIDList

known folder のパスを ITEMIDLIST 構造体として取得する。

SHGetKnownFolderIDList rfid, dwFlags, hToken, ppidl

rfid : [var] 型: REFKNOWNFOLDERID フォルダを識別する KNOWNFOLDERID への参照。known folder ID に関連付けられたフォルダは、特定のシステムには存在しない場合がある。
dwFlags : [int] 型: DWORD 特殊な取得オプションを指定するフラグ。この値は 0 でもよく、それ以外の場合は 1 つ以上の KNOWN_FOLDER_FLAG 値である。
hToken : [intptr] 型: HANDLE 特定のユーザーを表すために使用するアクセストークン。このパラメーターは通常 NULL に設定し、その場合、関数は現在のユーザーのフォルダインスタンスへのアクセスを試みる。ただし、複数ユーザーを持ち得るが単一ユーザーに属するものとして扱われるフォルダの場合は、hToken に値を割り当てる必要があるかもしれない。この種類の最も一般的に使用されるフォルダは Documents である。hToken が非 null の場合、呼び出し側アプリケーションは正しい偽装を行う責任がある。TOKEN_QUERY および TOKEN_IMPERSONATE を含む、特定のユーザーに対する適切なセキュリティ特権を持っている必要があり、ユーザーのレジストリハイブが現在マウントされている必要がある。アクセス制御の詳細については、Access Control を参照。hToken パラメーターに -1 を指定すると、Default User を表す。これにより SHGetKnownFolderIDList のクライアントが Default User の Desktop フォルダなどのフォルダの場所を見つけられるようになる。Default User のユーザープロファイルは、新しいユーザーアカウントが作成されるたびに複製され、Documents や Desktop などの特殊フォルダを含む。Default User フォルダに追加した項目は、新しいユーザーアカウントすべてにも表示される。Default User フォルダへのアクセスには管理者特権が必要であることに注意。
ppidl : [var] 型: PIDLIST_ABSOLUTE* このメソッドが返るときに、フォルダの PIDL へのポインターを格納する。このパラメーターは初期化されていない状態で渡される。呼び出し側は、不要になった時点で ILFree を呼び出して返された PIDL を解放する責任がある。

(プラグイン / モジュール : shell32.dll)

解説

known folder のパスを ITEMIDLIST 構造体として取得する。

[戻り値]
型: HRESULT 成功した場合は S_OK を、それ以外の場合は次のいずれかを含むエラー値を返す。
(以下省略)

[備考]
この関数は SHGetFolderLocation を置き換える。古い関数は今や単に SHGetKnownFolderIDList
のラッパーである。この関数を呼び出す側は少なくとも User 特権を持っている必要がある。Documents フォルダなど、いくつかの
known folder はユーザーごとである。各ユーザーは Documents フォルダに対して異なるパスを持つ。hToken が
NULL の場合、API は現在のユーザーのフォルダインスタンスへのアクセスを試みる。hToken が有効なユーザートークンの場合、API
はそのトークンを使ってユーザーを偽装し、そのユーザーのフォルダインスタンスへのアクセスを試みる。

情報

プラグイン / モジュールshell32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の shell32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_shell32_gen2.hs