Vanara/PInvoke/Shell32/ShObjIdl.IKnownFolder.cs

1960 lines
94 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using Vanara.InteropServices;
namespace Vanara.PInvoke
{
public static partial class Shell32
{
/// <summary>Describes match criteria. Used by methods of the IKnownFolderManager interface.</summary>
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762505")]
public enum FFFP_MODE
{
/// <summary>Exact match.</summary>
FFFP_EXACTMATCH,
/// <summary>Nearest parent match.</summary>
FFFP_NEARESTPARENTMATCH,
}
/// <summary>Value that represent a category by which a folder registered with the Known Folder system can be classified.</summary>
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762512")]
public enum KF_CATEGORY
{
/// <summary>
/// Virtual folders are not part of the file system, which is to say that they have no path. For example, Control Panel and
/// Printers are virtual folders. A number of features such as folder path and redirection do not apply to this category.
/// </summary>
KF_CATEGORY_VIRTUAL = 1,
/// <summary>
/// Fixed file system folders are not managed by the Shell and are usually given a permanent path when the system is installed.
/// For example, the Windows and Program Files folders are fixed folders. A number of features such as redirection do not apply
/// to this category.
/// </summary>
KF_CATEGORY_FIXED = 2,
/// <summary>
/// Common folders are those file system folders used for sharing data and settings, accessible by all users of a system. For
/// example, all users share a common Documents folder as well as their per-user Documents folder.
/// </summary>
KF_CATEGORY_COMMON = 3,
/// <summary>
/// Per-user folders are those stored under each user's profile and accessible only by that user. For example,
/// %USERPROFILE%\Pictures. This category of folder usually supports many features including aliasing, redirection and customization.
/// </summary>
KF_CATEGORY_PERUSER = 4,
}
/// <summary>Flags that specify certain known folder behaviors. Used with the KNOWNFOLDER_DEFINITION structure.</summary>
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762513")]
[Flags]
public enum KF_DEFINITION_FLAGS
{
/// <summary>
/// Prevent a per-user known folder from being redirected to a network location. Note that if the known folder has been flagged
/// with KFDF_LOCAL_REDIRECT_ONLY but it is a subfolder of a known folder that is redirected to a network location, this
/// subfolder is redirected also.
/// </summary>
KFDF_LOCAL_REDIRECT_ONLY = 0x00000002,
/// <summary>Can be roamed through a PC-to-PC synchronization.</summary>
KFDF_ROAMABLE = 0x00000004,
/// <summary>
/// Create the folder when the user first logs on. Normally a known folder is not created until it is first called. At that
/// time, an API such as SHCreateItemInKnownFolder or IKnownFolder::GetShellItem is called with the KF_FLAG_CREATE flag.
/// However, some known folders need to exist immediately. An example is those known folders under %USERPROFILE%, which must
/// exist to provide a proper view. In those cases, KFDF_PRECREATE is set and Windows Explorer calls the creation API during its
/// user initialization.
/// </summary>
KFDF_PRECREATE = 0x00000008,
/// <summary>Introduced in Windows 7. The known folder is a file rather than a folder.</summary>
KFDF_STREAM = 0x00000010,
/// <summary>
/// Introduced in Windows 7. The full path of the known folder, with any environment variables fully expanded, is stored in the
/// registry under HKEY_CURRENT_USER.
/// </summary>
KFDF_PUBLISHEXPANDEDPATH = 0x00000020,
/// <summary>Introduced in Windows 8.1. Prevent showing the Locations tab in the property dialog of the known folder.</summary>
KFDF_NO_REDIRECT_UI = 0x00000040,
}
/// <summary>
/// Flags used by IKnownFolderManager::Redirect to specify details of a known folder redirection such as permissions and ownership
/// for the redirected folder.
/// </summary>
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762515")]
[Flags]
public enum KF_REDIRECT_FLAGS
{
/// <summary>Ensure that only the user has permission to access the redirected folder.</summary>
KF_REDIRECT_USER_EXCLUSIVE = 0x00000001,
/// <summary>Copy the DACL of the source folder to the target to maintain current access permissions.</summary>
KF_REDIRECT_COPY_SOURCE_DACL = 0x00000002,
/// <summary>
/// Sets the user as the owner of a newly created target folder unless the user is a member of the Administrator group, in which
/// case Administrator is set as the owner. Must be called with KF_REDIRECT_SET_OWNER_EXPLICIT.
/// </summary>
KF_REDIRECT_OWNER_USER = 0x00000004,
/// <summary>
/// Set the owner of a newly created target folder. If the user belongs to the Administrators group, Administrators is assigned
/// as the owner. Must be called with KF_REDIRECT_OWNER_USER.
/// </summary>
KF_REDIRECT_SET_OWNER_EXPLICIT = 0x00000008,
/// <summary>
/// Do not perform a redirection, simply check whether redirection has occurred. If so, IKnownFolderManager::Redirect returns
/// S_OK; if not, or if some actions remain to be completed, it returns S_FALSE.
/// </summary>
KF_REDIRECT_CHECK_ONLY = 0x00000010,
/// <summary>Display UI during the redirection.</summary>
KF_REDIRECT_WITH_UI = 0x00000020,
/// <summary>Unpin the source folder.</summary>
KF_REDIRECT_UNPIN = 0x00000040,
/// <summary>Pin the target folder.</summary>
KF_REDIRECT_PIN = 0x00000080,
/// <summary>Copy the existing contents—both files and subfolders—of the known folder to the redirected folder.</summary>
KF_REDIRECT_COPY_CONTENTS = 0x00000200,
/// <summary>
/// Delete the contents of the source folder after they have been copied to the redirected folder. This flag is valid only if
/// KF_REDIRECT_COPY_CONTENTS is set.
/// </summary>
KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x00000400,
/// <summary>Reserved. Do not use.</summary>
KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x00000800,
}
/// <summary>Flags that specify the current redirection capabilities of a known folder. Used by IKnownFolder::GetRedirectionCapabilities.</summary>
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762514")]
[Flags]
public enum KF_REDIRECTION_CAPABILITIES
{
/// <summary>
/// The folder can be redirected if any of the bits in the lower byte of the value are set but no DENY flag is set. DENY flags
/// are found in the upper byte of the value.
/// </summary>
KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0x000000FF,
/// <summary>
/// The folder can be redirected. Currently, redirection exists for only common and user folders; fixed and virtual folders
/// cannot be redirected.
/// </summary>
KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x00000001,
/// <summary>Redirection is not allowed.</summary>
KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0x000FFF00,
/// <summary>The folder cannot be redirected because it is already redirected by group policy.</summary>
KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x00000100,
/// <summary>The folder cannot be redirected because the policy prohibits redirecting this folder.</summary>
KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x00000200,
/// <summary>The folder cannot be redirected because the calling application does not have sufficient permissions.</summary>
KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x00000400,
}
/// <summary>Specify special retrieval options for known folders. These values supersede CSIDL values, which have parallel meanings.</summary>
[Flags]
[PInvokeData("Shlobj.h", MSDNShortId = "dd378447")]
public enum KNOWN_FOLDER_FLAG : uint
{
/// <summary>No flags.</summary>
KF_FLAG_DEFAULT = 0x00000000,
/// <summary>
/// Build a simple IDList (PIDL) This value can be used when you want to retrieve the file system path but do not specify this
/// value if you are retrieving the localized display name of the folder because it might not resolve correctly.
/// </summary>
KF_FLAG_SIMPLE_IDLIST = 0x00000100,
/// <summary>
/// Gets the folder's default path independent of the current location of its parent. KF_FLAG_DEFAULT_PATH must also be set.
/// </summary>
KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200,
/// <summary>
/// Gets the default path for a known folder. If this flag is not set, the function retrieves the current—and possibly
/// redirected—path of the folder. The execution of this flag includes a verification of the folder's existence unless
/// KF_FLAG_DONT_VERIFY is set.
/// </summary>
KF_FLAG_DEFAULT_PATH = 0x00000400,
/// <summary>
/// Initializes the folder using its Desktop.ini settings. If the folder cannot be initialized, the function returns a failure
/// code and no path is returned. This flag should always be combined with KF_FLAG_CREATE. If the folder is located on a
/// network, the function might take a longer time to execute.
/// </summary>
KF_FLAG_INIT = 0x00000800,
/// <summary>
/// Gets the true system path for the folder, free of any aliased placeholders such as %USERPROFILE%, returned by
/// SHGetKnownFolderIDList and IKnownFolder::GetIDList. This flag has no effect on paths returned by SHGetKnownFolderPath and
/// IKnownFolder::GetPath. By default, known folder retrieval functions and methods return the aliased path if an alias exists.
/// </summary>
KF_FLAG_NO_ALIAS = 0x00001000,
/// <summary>
/// Stores the full path in the registry without using environment strings. If this flag is not set, portions of the path may be
/// represented by environment strings such as %USERPROFILE%. This flag can only be used with SHSetKnownFolderPath and IKnownFolder::SetPath.
/// </summary>
KF_FLAG_DONT_UNEXPAND = 0x00002000,
/// <summary>
/// Do not verify the folder's existence before attempting to retrieve the path or IDList. If this flag is not set, an attempt
/// is made to verify that the folder is truly present at the path. If that verification fails due to the folder being absent or
/// inaccessible, the function returns a failure code and no path is returned. If the folder is located on a network, the
/// function might take a longer time to execute. Setting this flag can reduce that lag time.
/// </summary>
KF_FLAG_DONT_VERIFY = 0x00004000,
/// <summary>
/// Forces the creation of the specified folder if that folder does not already exist. The security provisions predefined for
/// that folder are applied. If the folder does not exist and cannot be created, the function returns a failure code and no path
/// is returned. This value can be used only with the following functions and methods: SHGetKnownFolderPath,
/// SHGetKnownFolderIDList, IKnownFolder::GetIDList, IKnownFolder::GetPath, and IKnownFolder::GetShellItem.
/// </summary>
KF_FLAG_CREATE = 0x00008000,
/// <summary>
/// Introduced in Windows 7: When running inside an app container, or when providing an app container token, this flag prevents
/// redirection to app container folders. Instead, it retrieves the path that would be returned where it not running inside an
/// app container.
/// </summary>
KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000,
/// <summary>Introduced in Windows 7. Return only aliased PIDLs. Do not use the file system path.</summary>
KF_FLAG_ALIAS_ONLY = 0x80000000
}
/// <summary>
/// The KNOWNFOLDERID constants represent GUIDs that identify standard folders registered with the system as Known Folders. These
/// folders are installed with Windows Vista and later operating systems, and a computer will have only folders appropriate to it
/// installed. For descriptions of these folders, see CSIDL.
/// </summary>
[PInvokeData("Knownfolders.h", MSDNShortId = "dd378457")]
public enum KNOWNFOLDERID
{
/// <summary>Account Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\AccountPictures</para>
/// <para>Localized Name: Account Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("008ca0b1-55b4-4c56-b8a8-4de4b299d3be")]
FOLDERID_AccountPictures,
/// <summary>AddNewProgramsFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{15eae92e-f17a-4431-9f28-805e482dafd4}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("de61d971-5ebc-4f02-a3a9-6c82895e5c04")]
FOLDERID_AddNewPrograms,
/// <summary>Windows Administrative Tools
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Administrative Tools</para>
/// <para>Localized Name: Windows Administrative Tools</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("724ef170-a42d-4fef-9f26-b60e846fba4f", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_ADMINTOOLS)]
FOLDERID_AdminTools,
/// <summary>Application Shortcuts
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\Application Shortcuts</para>
/// <para>Localized Name: Application Shortcuts</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("a3918781-e5f2-4890-b3d9-a7e54332328c")]
FOLDERID_ApplicationShortcuts,
/// <summary>AppsFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: shell:::{4234d49b-0245-4df3-b780-3893943456e1}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("1e87508d-89c2-42f0-8a7e-645a0f50ca58")]
FOLDERID_AppsFolder,
/// <summary>AppUpdatesFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}\::{d450a8a1-9568-45c7-9c0e-b4f9fb4537bd}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("a305ce99-f527-492b-8b1a-7e76fa98d6e4")]
FOLDERID_AppUpdates,
/// <summary>Camera Roll
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures\Camera Roll</para>
/// <para>Localized Name: Camera Roll</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("ab5fb87b-7ce2-4f83-915d-550846c9537b")]
FOLDERID_CameraRoll,
/// <summary>Temporary Burn Folder
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\Burn\Burn</para>
/// <para>Localized Name: Temporary Burn Folder</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY</para>
/// </summary>
[KnownFolderDetail("9e52ab10-f80d-49df-acb8-4330f5687855", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_CDBURN_AREA)]
FOLDERID_CDBurning,
/// <summary>ChangeRemoveProgramsFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{7b81be6a-ce2b-4676-a29e-eb907a5126c5}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("df7266ac-9274-4867-8d55-3bd661de872d")]
FOLDERID_ChangeRemovePrograms,
/// <summary>Windows Administrative Tools
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Administrative Tools</para>
/// <para>Localized Name: Windows Administrative Tools</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("d0384e7d-bac3-4797-8f14-cba229b392b5", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_ADMINTOOLS)]
FOLDERID_CommonAdminTools,
/// <summary>OEM Links
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\OEM Links</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("c1bae2d0-10df-4334-bedd-7aa20b227a9d", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_OEM_LINKS)]
FOLDERID_CommonOEMLinks,
/// <summary>Programs
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs</para>
/// <para>Localized Name: Programs</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("0139d44e-6afe-49f2-8690-3dafcae6ffb8", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_PROGRAMS)]
FOLDERID_CommonPrograms,
/// <summary>Start Menu
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu</para>
/// <para>Localized Name: Start Menu</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("a4115719-d62e-491d-aa7c-e74b8be3b067", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_STARTMENU)]
FOLDERID_CommonStartMenu,
/// <summary>Startup
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Startup</para>
/// <para>Localized Name: Startup</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("82a5ea35-d9cd-47c5-9629-e15d2f714e6e", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_STARTUP)]
FOLDERID_CommonStartup,
/// <summary>Common Templates
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Templates</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b94237e7-57ac-4347-9151-b08c6c32d1f7", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_TEMPLATES)]
FOLDERID_CommonTemplates,
/// <summary>MyComputerFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("0ac0837c-bbf8-452a-850d-79d08e667ca7", Equivalent = Environment.SpecialFolder.MyComputer /* CSIDL.CSIDL_DRIVES */)]
FOLDERID_ComputerFolder,
/// <summary>ConflictFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}\::{E413D040-6788-4C22-957E-175D1C513A34},</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("4bfefb45-347d-4006-a5be-ac0cb0567192")]
FOLDERID_ConflictFolder,
/// <summary>ConnectionsFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("6f0cd92b-2e97-45d1-88ff-b0d186b8dedd", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_CONNECTIONS)]
FOLDERID_ConnectionsFolder,
/// <summary>Contacts
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Contacts</para>
/// <para>Parsing Name: ::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\{56784854-C6CB-462B-8169-88E350ACB882}</para>
/// <para>Tooltip: Contains Contact files.</para>
/// <para>Localized Name: Contacts</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("56784854-c6cb-462b-8169-88e350acb882")]
FOLDERID_Contacts,
/// <summary>ControlPanelFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("82a74aeb-aeb4-465c-a014-d097ee346d63", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_CONTROLS)]
FOLDERID_ControlPanelFolder,
/// <summary>Cookies
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\INetCookies</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("2b0f765d-c0e9-4171-908e-08a611b84ff6", Equivalent = Environment.SpecialFolder.Cookies /* CSIDL.CSIDL_COOKIES */)]
FOLDERID_Cookies,
/// <summary>Desktop
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Desktop</para>
/// <para>Localized Name: Desktop</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("b4bfcc3a-db2c-424c-b029-7fe99a87c641", Equivalent = Environment.SpecialFolder.Desktop /* CSIDL.CSIDL_DESKTOP */)]
FOLDERID_Desktop,
/// <summary>Device Metadata Store
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\DeviceMetadataStore</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("5ce4a5e9-e4eb-479d-b89f-130c02886155")]
FOLDERID_DeviceMetadataStore,
/// <summary>Documents
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Documents</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{A8CDFF1C-4878-43be-B5FD-F8091C1C60D0}</para>
/// <para>Localized Name: Documents</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("fdd39ad0-238f-46af-adb4-6c85480369c7", Equivalent = Environment.SpecialFolder.MyDocuments /* CSIDL.CSIDL_MYDOCUMENTS */)]
FOLDERID_Documents,
/// <summary>Documents
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\Documents.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{7b0db17d-9cd2-4a93-9733-46cc89022e7c}</para>
/// <para>Localized Name: Documents</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("7b0db17d-9cd2-4a93-9733-46cc89022e7c")]
FOLDERID_DocumentsLibrary,
/// <summary>Downloads
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Downloads</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{374DE290-123F-4565-9164-39C4925E467B}</para>
/// <para>Localized Name: Downloads</para>
/// <para>SDDL: S:AI(RA;IOOICI;;;;WD;("IMAGELOAD",TU,0x0,0x01))</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("374de290-123f-4565-9164-39c4925e467b")]
FOLDERID_Downloads,
/// <summary>Favorites
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Favorites</para>
/// <para>Localized Name: Favorites</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("1777f761-68ad-4d8a-87bd-30b759fa33dd", Equivalent = Environment.SpecialFolder.Favorites /* CSIDL.CSIDL_FAVORITES */)]
FOLDERID_Favorites,
/// <summary>Fonts
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%\Fonts</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("fd228cb7-ae11-4ae3-864c-16f3910ab8fe", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_FONTS)]
FOLDERID_Fonts,
/// <summary>Games</summary>
[KnownFolderDetail("{CAC52C1A-B53D-4edc-92D7-6B2E8AC19434}")]
FOLDERID_Games,
/// <summary>GameTasks
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\GameExplorer</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY</para>
/// </summary>
[KnownFolderDetail("054fae61-4dd8-4787-80b6-090220c4b700")]
FOLDERID_GameTasks,
/// <summary>History
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\History</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY</para>
/// </summary>
[KnownFolderDetail("d9dc8a3b-b784-432e-a781-5a1130a75963", Equivalent = Environment.SpecialFolder.History /* CSIDL.CSIDL_HISTORY */)]
FOLDERID_History,
/// <summary>HomeGroupFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{B4FB3F98-C1EA-428d-A78A-D1F5659CBA93}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("52528a6b-b9e3-4add-b60d-588c2dba842d")]
FOLDERID_HomeGroup,
/// <summary>HomeGroupCurrentUserFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{B4FB3F98-C1EA-428d-A78A-D1F5659CBA93}\$CurrentUser$</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("9b74b6a3-0dfd-4f11-9e78-5f7800f2e772")]
FOLDERID_HomeGroupCurrentUser,
/// <summary>ImplicitAppShortcuts
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("bcb5256f-79f6-4cee-b725-dc34e402fd46")]
FOLDERID_ImplicitAppShortcuts,
/// <summary>Cache
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\INetCache</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY</para>
/// </summary>
[KnownFolderDetail("352481e8-33be-4251-ba85-6007caedcf9d", Equivalent = Environment.SpecialFolder.InternetCache /* CSIDL.CSIDL_INTERNET_CACHE */)]
FOLDERID_InternetCache,
/// <summary>InternetFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{871C5380-42A0-1069-A2EA-08002B30309D}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("4d9f7874-4e0c-4904-967b-40b0d20c3e4b", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_INTERNET)]
FOLDERID_InternetFolder,
/// <summary>Libraries
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("1b3ea5dc-b587-4786-b4ef-bd1dc332aeae")]
FOLDERID_Libraries,
/// <summary>Links
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Links</para>
/// <para>Parsing Name: ::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\{bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968}</para>
/// <para>Localized Name: Links</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968")]
FOLDERID_Links,
/// <summary>Local AppData
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("f1b32785-6fba-4fcf-9d55-7b8e7f157091", Equivalent = Environment.SpecialFolder.LocalApplicationData /* CSIDL.CSIDL_LOCAL_APPDATA */)]
FOLDERID_LocalAppData,
/// <summary>LocalAppDataLow
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%Low</para>
/// <para>SDDL: S:(ML;OICI;NW;;;LW)</para>
/// <para>Attributes: FILE_ATTRIBUTE_NOT_CONTENT_INDEXED</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("a520a1a4-1780-4ff6-bd18-167343c5af16")]
FOLDERID_LocalAppDataLow,
/// <summary>LocalizedResourcesDir
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%\resources\0409</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("2a00375e-224c-49de-b8d1-440df7ef3ddc", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_RESOURCES_LOCALIZED)]
FOLDERID_LocalizedResourcesDir,
/// <summary>Music
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Music</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{1CF1260C-4DD0-4EBB-811F-33C572699FDE}</para>
/// <para>Tooltip: Contains music and other audio files.</para>
/// <para>Localized Name: Music</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("4bd8d571-6d19-48d3-be97-422220080e43", Equivalent = Environment.SpecialFolder.MyMusic /* CSIDL.CSIDL_MYMUSIC */)]
FOLDERID_Music,
/// <summary>Music
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\Music.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{2112AB0A-C86A-4ffe-A368-0DE96E47012E}</para>
/// <para>Tooltip: Contains music and other audio files.</para>
/// <para>Localized Name: Music</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("2112ab0a-c86a-4ffe-a368-0de96e47012e")]
FOLDERID_MusicLibrary,
/// <summary>NetHood
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Network Shortcuts</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("c5abbf53-e17f-4121-8900-86626fc2c973", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_NETHOOD)]
FOLDERID_NetHood,
/// <summary>NetworkPlacesFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("d20beec4-5ca8-4905-ae3b-bf251ea09b53", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_NETWORK)]
FOLDERID_NetworkFolder,
/// <summary>3D Objects
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\3D Objects</para>
/// <para>Localized Name: 3D Objects</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("31c0dd25-9439-4f12-bf41-7ff4eda38722")]
FOLDERID_Objects3D,
/// <summary>Original Images
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows Photo Gallery\Original Images</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("2c36c0aa-5812-4b87-bfd0-4cd0dfb19b39")]
FOLDERID_OriginalImages,
/// <summary>Slide Shows
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures\Slide Shows</para>
/// <para>Localized Name: Slide Shows</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// </summary>
[KnownFolderDetail("69d2cf90-fc33-4fb7-9a0c-ebb0f0fcb43c")]
FOLDERID_PhotoAlbums,
/// <summary>Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\Pictures.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{A990AE9F-A03B-4e80-94BC-9912D7504104}</para>
/// <para>Tooltip: Contains digital photos, images, and graphic files.</para>
/// <para>Localized Name: Pictures</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("a990ae9f-a03b-4e80-94bc-9912d7504104")]
FOLDERID_PicturesLibrary,
/// <summary>Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{3ADD1653-EB32-4CB0-BBD7-DFA0ABB5ACCA}</para>
/// <para>Tooltip: Contains digital photos, images, and graphic files.</para>
/// <para>Localized Name: Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("33e28130-4e1e-4676-835a-98395c3bc3bb", Equivalent = Environment.SpecialFolder.MyPictures /* CSIDL.CSIDL_MYPICTURES */)]
FOLDERID_Pictures,
/// <summary>Playlists
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Music\Playlists</para>
/// <para>Localized Name: Playlists</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// </summary>
[KnownFolderDetail("de92c1c7-837f-4f69-a3bb-86e631204a23")]
FOLDERID_Playlists,
/// <summary>PrintersFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("76fc4e2d-d6ad-4519-a663-37bd56068185", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_PRINTERS)]
FOLDERID_PrintersFolder,
/// <summary>PrintHood
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Printer Shortcuts</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("9274bd8d-cfd1-41c3-b35e-b13f55a758f4", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_PRINTHOOD)]
FOLDERID_PrintHood,
/// <summary>Profile
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %USERPROFILE%</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("5e6c858f-0e22-4760-9afe-ea3317b67173", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_PROFILE)]
FOLDERID_Profile,
/// <summary>Common AppData
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %ALLUSERSPROFILE%</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("62ab5d82-fdc1-4dc3-a9dd-070d1d495d97", Equivalent = Environment.SpecialFolder.CommonApplicationData /* CSIDL.CSIDL_COMMON_APPDATA */)]
FOLDERID_ProgramData,
/// <summary>Program Files
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %ProgramFiles% (x86)</para>
/// <para>Localized Name: Program Files</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("905e63b6-c1bf-494e-b29c-65b732d3d21a", Equivalent = Environment.SpecialFolder.ProgramFiles /* CSIDL.CSIDL_PROGRAM_FILES */)]
FOLDERID_ProgramFiles,
/// <summary>Program Files</summary>
[KnownFolderDetail("{6D809377-6AF0-444b-8957-A3773F02200E}")]
FOLDERID_ProgramFilesX64,
/// <summary>Program Files (x86)
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %ProgramFiles% (x86)</para>
/// <para>Localized Name: Program Files (x86)</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("7c5a40ef-a0fb-4bfc-874a-c0f2e0b9fa8e", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_PROGRAM_FILESX86)]
FOLDERID_ProgramFilesX86,
/// <summary>ProgramFilesCommon
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %ProgramFiles% (x86)\Common Files</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("f7f1ed05-9f6d-47a2-aaae-29d317c6f066", Equivalent = Environment.SpecialFolder.CommonProgramFiles /* CSIDL.CSIDL_PROGRAM_FILES_COMMON */)]
FOLDERID_ProgramFilesCommon,
/// <summary>Common Files</summary>
[KnownFolderDetail("{6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D}")]
FOLDERID_ProgramFilesCommonX64,
/// <summary>ProgramFilesCommonX86
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %ProgramFiles% (x86)\Common Files</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("de974d24-d9c6-4d3e-bf91-f4455120b917", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_PROGRAM_FILES_COMMONX86)]
FOLDERID_ProgramFilesCommonX86,
/// <summary>Programs
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Start Menu\Programs</para>
/// <para>Localized Name: Programs</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("a77f5d77-2e2b-44c3-a6a2-aba601054a51", Equivalent = Environment.SpecialFolder.Programs /* CSIDL.CSIDL_PROGRAMS */)]
FOLDERID_Programs,
/// <summary>Public
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %PUBLIC%</para>
/// <para>Localized Name: Public</para>
/// <para>SDDL: D:PAI(A;OICI;FA;;;BA)(A;OICIIO;FA;;;CO)(A;OICI;FA;;;SY)(A;OICIIO;0x1301ff;;;IU)(A;;0x1200af;;;IU)(A;OICIIO;0x1301ff;;;SU)(A;;0x1200af;;;SU)(A;OICIIO;0x1301ff;;;S-1-5-3)(A;;0x1200af;;;S-1-5-3)</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("dfdf76a2-c82a-4d63-906a-5644ac457385")]
FOLDERID_Public,
/// <summary>Public Desktop
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Desktop</para>
/// <para>Localized Name: Public Desktop</para>
/// <para>SDDL: D:P(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;IU)(A;OICI;FA;;;SY)</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("c4aa340d-f20f-4863-afef-f87ef2e6ba25", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_DESKTOPDIRECTORY)]
FOLDERID_PublicDesktop,
/// <summary>Public Documents
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Documents</para>
/// <para>Localized Name: Public Documents</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("ed4824af-dce4-45a8-81e2-fc7965083634", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_DOCUMENTS)]
FOLDERID_PublicDocuments,
/// <summary>Public Downloads
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Downloads</para>
/// <para>Localized Name: Public Downloads</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("3d644c9b-1fb8-4f30-9b45-f670235f79c0")]
FOLDERID_PublicDownloads,
/// <summary>PublicGameTasks
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\GameExplorer</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY</para>
/// </summary>
[KnownFolderDetail("debf2536-e1a8-4c59-b6a2-414586476aea")]
FOLDERID_PublicGameTasks,
/// <summary>PublicLibraries
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Libraries</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("48daf80b-e6cf-4f4e-b800-0e69d84ee384")]
FOLDERID_PublicLibraries,
/// <summary>Public Music
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Music</para>
/// <para>Tooltip: Contains music and other audio files.</para>
/// <para>Localized Name: Public Music</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("3214fab5-9757-4298-bb61-92a9deaa44ff", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_MUSIC)]
FOLDERID_PublicMusic,
/// <summary>Public Pictures
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Pictures</para>
/// <para>Tooltip: Contains digital photos, images, and graphic files.</para>
/// <para>Localized Name: Public Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("b6ebfb86-6907-413c-9af7-4fc2abf07cc5", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_PICTURES)]
FOLDERID_PublicPictures,
/// <summary>CommonRingtones
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Ringtones</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("e555ab60-153b-4d17-9f04-a5fe99fc15ec")]
FOLDERID_PublicRingtones,
/// <summary>Public Account Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %PUBLIC%\AccountPictures</para>
/// <para>Localized Name: Public Account Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_HIDDEN</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("0482af6c-08f1-4c34-8c90-e17ec98b1e17")]
FOLDERID_PublicUserTiles,
/// <summary>Public Videos
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Videos</para>
/// <para>Tooltip: Contains movies and other video files.</para>
/// <para>Localized Name: Public Videos</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("2400183a-6185-49fb-a2d8-4a392a602ba3", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_COMMON_VIDEO)]
FOLDERID_PublicVideos,
/// <summary>Quick Launch
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Internet Explorer\Quick Launch</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("52a4f021-7b75-48a9-9f6b-4b87a210bc8f")]
FOLDERID_QuickLaunch,
/// <summary>Recent Items
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Recent</para>
/// <para>Localized Name: Recent Items</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("ae50c081-ebd2-438a-8655-8a092e34987a", Equivalent = Environment.SpecialFolder.Recent /* CSIDL.CSIDL_RECENT */)]
FOLDERID_Recent,
/// <summary>Recorded TV
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Libraries\RecordedTV.library-ms</para>
/// <para>Localized Name: Recorded TV</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("1a6fdba2-f42d-4358-a798-b74d745926c5")]
FOLDERID_RecordedTVLibrary,
/// <summary>RecycleBinFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{645FF040-5081-101B-9F08-00AA002F954E}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b7534046-3ecb-4c18-be4e-64cd4cb7d6ac", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_BITBUCKET)]
FOLDERID_RecycleBinFolder,
/// <summary>ResourceDir
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%\resources</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("8ad10c31-2adb-4296-a8f7-e4701232c972", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_RESOURCES)]
FOLDERID_ResourceDir,
/// <summary>Ringtones
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\Ringtones</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("c870044b-f49e-4126-a9c3-b52a1ff411e8")]
FOLDERID_Ringtones,
/// <summary>AppData
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("3eb685db-65f9-4cf6-a03a-e3ef65729f3d", Equivalent = Environment.SpecialFolder.ApplicationData /* CSIDL.CSIDL_APPDATA */)]
FOLDERID_RoamingAppData,
/// <summary>Roamed Tile Images
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\RoamedTileImages</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("aaa8d5a5-f1d6-4259-baa8-78e7ef60835e")]
FOLDERID_RoamedTileImages,
/// <summary>Roaming Tiles
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\RoamingTiles</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("00bcfc5a-ed94-4e48-96a1-3f6217f21990")]
FOLDERID_RoamingTiles,
/// <summary>SampleMusic
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Music\Sample Music</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b250c668-f57d-4ee1-a63c-290ee7d1aa1f")]
FOLDERID_SampleMusic,
/// <summary>SamplePictures
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Pictures\Sample Pictures</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("c4900540-2379-4c75-844b-64e6faf8716b")]
FOLDERID_SamplePictures,
/// <summary>Sample Playlists</summary>
[KnownFolderDetail("{15CA69B3-30EE-49C1-ACE1-6B5EC372AFB5}")]
FOLDERID_SamplePlaylists,
/// <summary>SampleVideos
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %PUBLIC%\Videos\Sample Videos</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("859ead94-2e85-48ad-a71a-0969cb56a6cd")]
FOLDERID_SampleVideos,
/// <summary>Saved Games
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Saved Games</para>
/// <para>Parsing Name: ::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\{4C5C32FF-BB9D-43b0-B5B4-2D72E54EAAA4}</para>
/// <para>Localized Name: Saved Games</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("4c5c32ff-bb9d-43b0-b5b4-2d72e54eaaa4")]
FOLDERID_SavedGames,
/// <summary>Saved Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures\Saved Pictures</para>
/// <para>Localized Name: Saved Pictures</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("3b193882-d3ad-4eab-965a-69829d1fb59f")]
FOLDERID_SavedPictures,
/// <summary>Saved Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\SavedPictures.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{E25B5812-BE88-4bd9-94B0-29233477B6C3}</para>
/// <para>Localized Name: Saved Pictures</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("e25b5812-be88-4bd9-94b0-29233477b6c3")]
FOLDERID_SavedPicturesLibrary,
/// <summary>Searches
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Searches</para>
/// <para>Parsing Name: ::{59031a47-3f72-44a7-89c5-5595fe6b30ee}\{7d1d3a04-debb-4115-95cf-2f29da2920da}</para>
/// <para>Localized Name: Searches</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_PUBLISHEXPANDEDPATH</para>
/// </summary>
[KnownFolderDetail("7d1d3a04-debb-4115-95cf-2f29da2920da")]
FOLDERID_SavedSearches,
/// <summary>Screenshots
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures\Screenshots</para>
/// <para>Localized Name: Screenshots</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b7bede81-df94-4682-a7d8-57a52620b86f")]
FOLDERID_Screenshots,
/// <summary>CSCFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: shell:::{BD7A2E7B-21CB-41b2-A086-B309680C6B7E}\*</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("ee32e446-31ca-4aba-814f-a5ebd2fd6d5e")]
FOLDERID_SEARCH_CSC,
/// <summary>SearchHistoryFolder
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\History</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("0d4c3db6-03a3-462f-a0e6-08924c41b5d4")]
FOLDERID_SearchHistory,
/// <summary>SearchHomeFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{9343812e-1c37-4a49-a12e-4b2d810d956b}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("190337d1-b8ca-4121-a639-6d472d16972a")]
FOLDERID_SearchHome,
/// <summary>MAPIFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: shell:::{89D83576-6BD1-4C86-9454-BEB04E94C819}\*</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("98ec0e18-2098-4d44-8644-66979315a281")]
FOLDERID_SEARCH_MAPI,
/// <summary>SearchTemplatesFolder
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\Templates</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("7e636bfe-dfa9-4d5e-b456-d7b39851d8a9")]
FOLDERID_SearchTemplates,
/// <summary>SendTo
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\SendTo</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("8983036c-27c0-404b-8f08-102d10dcfd74", Equivalent = Environment.SpecialFolder.SendTo /* CSIDL.CSIDL_SENDTO */)]
FOLDERID_SendTo,
/// <summary>Gadgets</summary>
[KnownFolderDetail("{7B396E54-9EC5-4300-BE0A-2482EBAE1A26}")]
FOLDERID_SidebarDefaultParts,
/// <summary>Gadgets</summary>
[KnownFolderDetail("{A75D362E-50FC-4fb7-AC2C-A8BEAA314493}")]
FOLDERID_SidebarParts,
/// <summary>OneDrive
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\OneDrive</para>
/// <para>Parsing Name: shell:::{018D5C66-4533-4307-9B53-224DE2ED1FE6}</para>
/// <para>Localized Name: OneDrive</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_LOCAL_REDIRECT_ONLY, KFDF_NO_REDIRECT_UI</para>
/// </summary>
[KnownFolderDetail("a52bba46-e9e1-435f-b3d9-28daa648c0f6")]
FOLDERID_SkyDrive,
/// <summary>OneDriveCameraRoll
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\OneDrive\Pictures\Camera Roll</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_NO_REDIRECT_UI</para>
/// </summary>
[KnownFolderDetail("767e6811-49cb-4273-87c2-20f355e1085b")]
FOLDERID_SkyDriveCameraRoll,
/// <summary>OneDriveDocuments
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\OneDrive\Documents</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_NO_REDIRECT_UI</para>
/// </summary>
[KnownFolderDetail("24d89e24-2f19-4534-9dde-6a6671fbb8fe")]
FOLDERID_SkyDriveDocuments,
/// <summary>OneDrivePictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\OneDrive\Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_NO_REDIRECT_UI</para>
/// </summary>
[KnownFolderDetail("339719b5-8c47-4894-94c2-d8f77add44a6")]
FOLDERID_SkyDrivePictures,
/// <summary>Start Menu
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Start Menu</para>
/// <para>Localized Name: Start Menu</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("625b53c3-ab48-4ec1-ba1f-a1ef4146fc19", Equivalent = Environment.SpecialFolder.StartMenu /* CSIDL.CSIDL_STARTMENU */)]
FOLDERID_StartMenu,
/// <summary>Startup
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup</para>
/// <para>Localized Name: Startup</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("b97d20bb-f46a-4c97-ba10-5e3608430854", Equivalent = Environment.SpecialFolder.Startup /* CSIDL.CSIDL_STARTUP */)]
FOLDERID_Startup,
/// <summary>SyncCenterFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("43668bf8-c14e-49b2-97c9-747784d784b7")]
FOLDERID_SyncManagerFolder,
/// <summary>SyncResultsFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}\::{BC48B32F-5910-47F5-8570-5074A8A5636A},</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("289a9a43-be44-4057-a41b-587a76d7e7f9")]
FOLDERID_SyncResultsFolder,
/// <summary>SyncSetupFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}\::{F1390A9A-A3F4-4E5D-9C5F-98F3BD8D935C},</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("0f214138-b1d3-4a90-bba9-27cbc0c5389a")]
FOLDERID_SyncSetupFolder,
/// <summary>System
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%\system32</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("1ac14e77-02e7-4e5d-b744-2eb1ae5198b7", Equivalent = Environment.SpecialFolder.System /* CSIDL.CSIDL_SYSTEM */)]
FOLDERID_System,
/// <summary>SystemX86
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%\SysWOW64</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("d65231b0-b2f1-4857-a4ce-a8e7c6ea7d27", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_SYSTEMX86)]
FOLDERID_SystemX86,
/// <summary>Templates
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Templates</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("a63293e8-664e-48db-a079-df759e0509f7", Equivalent = Environment.SpecialFolder.Templates /* CSIDL.CSIDL_TEMPLATES */)]
FOLDERID_Templates,
/// <summary>User Pinned
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned</para>
/// <para>Attributes: FILE_ATTRIBUTE_HIDDEN</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("9e3995ab-1f9c-4f13-b827-48b24b6c7174")]
FOLDERID_UserPinned,
/// <summary>Users
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %HOMEDRIVE%\Users</para>
/// <para>Localized Name: Users</para>
/// <para>SDDL: D:P(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;GXGR;;;BU)(A;OICI;GXGR;;;WD)</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("0762d272-c50a-4bb0-a382-697dcd729b80")]
FOLDERID_UserProfiles,
/// <summary>UserProgramFiles
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Programs</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("5cd7aee2-2219-4a67-b85d-6c9ce15660cb")]
FOLDERID_UserProgramFiles,
/// <summary>UserProgramFilesCommon
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Programs\Common</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("bcbd3057-ca5c-4622-b42d-bc56db0ae516")]
FOLDERID_UserProgramFilesCommon,
/// <summary>UsersFilesFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{59031a47-3f72-44a7-89c5-5595fe6b30ee}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("f3ce0f7c-4901-4acc-8648-d5d44b04ef8f")]
FOLDERID_UsersFiles,
/// <summary>UsersLibrariesFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("a302545d-deff-464b-abe8-61c8648d939b")]
FOLDERID_UsersLibraries,
/// <summary>Videos
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Videos</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{A0953C92-50DC-43BF-BE83-3742FED03C9C}</para>
/// <para>Tooltip: Contains movies and other video files.</para>
/// <para>Localized Name: Videos</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE, KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("18989b1d-99b5-455b-841c-ab7c74e4ddfc", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_MYVIDEO)]
FOLDERID_Videos,
/// <summary>Videos
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\Videos.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{491E922F-5643-4af4-A7EB-4E7A138D8174}</para>
/// <para>Tooltip: Contains movies and other video files.</para>
/// <para>Localized Name: Videos</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_PRECREATE, KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("491e922f-5643-4af4-a7eb-4e7a138d8174")]
FOLDERID_VideosLibrary,
/// <summary>Windows
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %SystemRoot%</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("f38bf404-1d43-42f2-9305-67de0b28fc23", Equivalent = (Environment.SpecialFolder)CSIDL.CSIDL_WINDOWS)]
FOLDERID_Windows,
/// <summary>Application Mods
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\AppMods</para>
/// <para>Localized Name: Application Mods</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("7ad67899-66af-43ba-9156-6aad42e6c596")]
FOLDERID_AllAppMods,
/// <summary>Captures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Videos\Captures</para>
/// <para>Localized Name: Captures</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("edc0fe71-98d8-4f4a-b920-c8dc133cb165")]
FOLDERID_AppCaptures,
/// <summary>AppDataDesktop
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Desktop</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b2c5e279-7add-439f-b28c-c41fe1bbf672")]
FOLDERID_AppDataDesktop,
/// <summary>AppDataDocuments
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Documents</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("7be16610-1f7f-44ac-bff0-83e15f2ffca1")]
FOLDERID_AppDataDocuments,
/// <summary>AppDataFavorites
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\Favorites</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("7cfbefbc-de1f-45aa-b843-a542ac536cc9")]
FOLDERID_AppDataFavorites,
/// <summary>AppDataProgramData
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\ProgramData</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("559d40a3-a036-40fa-af61-84cb430a4d34")]
FOLDERID_AppDataProgramData,
/// <summary>Camera Roll
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %APPDATA%\Microsoft\Windows\Libraries\CameraRoll.library-ms</para>
/// <para>Parsing Name: ::{031E4825-7B94-4dc3-B131-E946B44C8DD5}\{2B20DF75-1EDA-4039-8097-38798227D5B7}</para>
/// <para>Localized Name: Camera Roll</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// <para>Flags: KFDF_STREAM</para>
/// </summary>
[KnownFolderDetail("2b20df75-1eda-4039-8097-38798227d5b7")]
FOLDERID_CameraRollLibrary,
/// <summary>Start Menu
/// <para>Category: KF_CATEGORY_COMMON</para>
/// <para>Path: %ALLUSERSPROFILE%\Microsoft\Windows\Start Menu Places</para>
/// <para>Localized Name: Start Menu</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("a440879f-87a0-4f7d-b700-0207b966194a")]
FOLDERID_CommonStartMenuPlaces,
/// <summary>CredentialManager
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %APPDATA%\Microsoft\Credentials</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("915221fb-9efe-4bda-8fd7-f78dca774f87")]
FOLDERID_CredentialManager,
/// <summary/>
[KnownFolderDetail("3db40b20-2a30-4dbe-917e-771dd21dd099")]
FOLDERID_CurrentAppMods,
/// <summary>CryptoKeys
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %APPDATA%\Microsoft\Crypto</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("b88f4daa-e7bd-49a9-b74d-02885a5dc765")]
FOLDERID_CryptoKeys,
/// <summary>Development Files
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %LOCALAPPDATA%\DevelopmentFiles</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("dbe8e08e-3053-4bbc-b183-2a7b2b191e59")]
FOLDERID_DevelopmentFiles,
/// <summary>ThisDeviceFolder
/// <para>Category: KF_CATEGORY_VIRTUAL</para>
/// <para>Parsing Name: ::{f8278c54-a712-415b-b593-b77a2be0dda9}</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("1c2ac1dc-4358-4b6c-9733-af21156576f0")]
FOLDERID_Device,
/// <summary>DpapiKeys
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %APPDATA%\Microsoft\Protect</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("10c07cd0-ef91-4567-b850-448b77cb37f9")]
FOLDERID_DpapiKeys,
/// <summary>Documents
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Documents</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{d3162b92-9365-467a-956b-92703aca08af}</para>
/// <para>Localized Name: Documents</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("f42ee2d3-909f-4907-8871-4c22fc0bf756")]
FOLDERID_LocalDocuments,
/// <summary>Downloads
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Downloads</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{088e3905-0323-4b02-9826-5d99428e115f}</para>
/// <para>Localized Name: Downloads</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("7d83ee9b-2244-4e70-b1f5-5393042af1e4")]
FOLDERID_LocalDownloads,
/// <summary>Music
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Music</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{3dfdf296-dbec-4fb4-81d1-6a3438bcf4de}</para>
/// <para>Tooltip: Contains music and other audio files.</para>
/// <para>Localized Name: Music</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("a0c69a99-21c8-4671-8703-7934162fcf1d")]
FOLDERID_LocalMusic,
/// <summary>Pictures
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Pictures</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{24ad3ad4-a569-4530-98e1-ab02f9417aa8}</para>
/// <para>Tooltip: Contains digital photos, images, and graphic files.</para>
/// <para>Localized Name: Pictures</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("0ddd015d-b06c-45d5-8c4c-f59713854639")]
FOLDERID_LocalPictures,
/// <summary>Videos
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Videos</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{f86fa3ab-70d2-4fc7-9c99-fcbf05467f3a}</para>
/// <para>Tooltip: Contains movies and other video files.</para>
/// <para>Localized Name: Videos</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_PRECREATE</para>
/// </summary>
[KnownFolderDetail("35286a68-3c57-41a1-bbb1-0eae73d76c95")]
FOLDERID_LocalVideos,
/// <summary>OneDrive root</summary>
FOLDERID_OneDrive = FOLDERID_SkyDrive,
/// <summary>Recorded Calls
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Recorded Calls</para>
/// <para>Localized Name: Recorded Calls</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("2f8b40c2-83ed-48ee-b383-a1f157ec6f9a")]
FOLDERID_RecordedCalls,
/// <summary/>
[KnownFolderDetail("12D4C69E-24AD-4923-BE19-31321C43A767")]
FOLDERID_RetailDemo,
/// <summary>OneDriveMusic
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\OneDrive\Music</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_NO_REDIRECT_UI</para>
/// </summary>
[KnownFolderDetail("c3f2459e-80d6-45dc-bfef-1f769f2be730")]
FOLDERID_SkyDriveMusic,
/// <summary>Common Start menu item.</summary>
[KnownFolderDetail("F26305EF-6948-40B9-B255-81453D09C785")]
FOLDERID_StartMenuAllPrograms,
/// <summary>SystemCertificates
/// <para>Category: KF_CATEGORY_FIXED</para>
/// <para>Path: %APPDATA%\Microsoft\SystemCertificates</para>
/// <para>Attributes: SECURITY_ANONYMOUS</para>
/// </summary>
[KnownFolderDetail("54eed2e0-e7ca-4fdb-9148-0f4247291cfa")]
FOLDERID_SystemCertificates,
/// <summary>Desktop
/// <para>Category: KF_CATEGORY_PERUSER</para>
/// <para>Path: %USERPROFILE%\Desktop</para>
/// <para>Parsing Name: shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}</para>
/// <para>Localized Name: Desktop</para>
/// <para>Attributes: FILE_ATTRIBUTE_READONLY</para>
/// <para>Flags: KFDF_ROAMABLE</para>
/// </summary>
[KnownFolderDetail("754ac886-df64-4cba-86b5-f7fbf4fbcef5")]
FOLDERID_ThisPCDesktop,
}
/// <summary>
/// Exposes methods that allow an application to retrieve information about a known folder's category, type, GUID, pointer to an
/// item identifier list (PIDL) value, redirection capabilities, and definition. It provides a method for the retrieval of a known
/// folder's IShellItem object. It also provides methods to get or set the path of the known folder.
/// </summary>
[ComImport, Guid("3AA7AF7E-9B36-420c-A8E3-F77D4674A488"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[PInvokeData("Shobjidl.h", MSDNShortId = "bb762502")]
public interface IKnownFolder
{
/// <summary>Gets the ID of the selected folder.</summary>
/// <returns>
/// When this method returns, returns the KNOWNFOLDERID value of the known folder. Note, KNOWNFOLDERID values are GUIDs.
/// </returns>
Guid GetId();
/// <summary>Retrieves the category—virtual, fixed, common, or per-user—of the selected folder.</summary>
/// <returns>When this method returns, contains a pointer to the KF_CATEGORY of the selected folder.</returns>
KF_CATEGORY GetCategory();
/// <summary>
/// Retrieves the location of a known folder in the Shell namespace in the form of a Shell item (IShellItem or derived interface).
/// </summary>
/// <param name="dwFlags">
/// Flags that specify special retrieval options. This value can be 0; otherwise, one or more of the KNOWN_FOLDER_FLAG values.
/// </param>
/// <param name="riid">A reference to the IID of the requested interface.</param>
/// <returns>
/// When this method returns, contains the interface pointer requested in <paramref name="riid"/>. This is typically IShellItem
/// or IShellItem2.
/// </returns>
[return: MarshalAs(UnmanagedType.Interface)]
object GetShellItem([In] KNOWN_FOLDER_FLAG dwFlags, in Guid riid);
/// <summary>Retrieves the path of a known folder as a string.</summary>
/// <param name="dwFlags">
/// Flags that specify special retrieval options. This value can be 0; otherwise, one or more of the KNOWN_FOLDER_FLAG values.
/// </param>
/// <returns>
/// When this method returns, contains the address of a pointer to a null-terminated buffer that contains the path. The calling
/// application is responsible for calling CoTaskMemFree to free this resource when it is no longer needed.
/// </returns>
[return: MarshalAs(UnmanagedType.LPWStr)]
string GetPath([In] KNOWN_FOLDER_FLAG dwFlags);
/// <summary>Assigns a new path to a known folder.</summary>
/// <param name="dwFlags">Either zero or the following value: KF_FLAG_DONT_UNEXPAND</param>
/// <param name="pszPath">The PSZ path.</param>
void SetPath([In] KNOWN_FOLDER_FLAG dwFlags, [In, MarshalAs(UnmanagedType.LPWStr)] string pszPath);
/// <summary>Gets the location of the Shell namespace folder in the IDList (ITEMIDLIST) form.</summary>
/// <param name="dwFlags">
/// Flags that specify special retrieval options. This value can be 0; otherwise, one or more of the KNOWN_FOLDER_FLAG values.
/// </param>
/// <returns>
/// When this method returns, contains the address of an absolute PIDL. This parameter is passed uninitialized. The calling
/// application is responsible for freeing this resource when it is no longer needed.
/// </returns>
[return: ComAliasName("ShellObjects.wirePIDL")]
PIDL GetIDList([In] KNOWN_FOLDER_FLAG dwFlags);
/// <summary>Retrieves the folder type.</summary>
/// <returns>When this returns, contains a pointer to a FOLDERTYPEID (a GUID) that identifies the known folder type.</returns>
Guid GetFolderType();
/// <summary>
/// Gets a value that states whether the known folder can have its path set to a new value or what specific restrictions or
/// prohibitions are placed on that redirection.
/// </summary>
/// <returns>
/// When this method returns, contains a pointer to a KF_REDIRECTION_CAPABILITIES value that indicates the redirection
/// capabilities for this folder.
/// </returns>
KF_REDIRECTION_CAPABILITIES GetRedirectionCapabilities();
/// <summary>
/// Retrieves a structure that contains the defining elements of a known folder, which includes the folder's category, name,
/// path, description, tooltip, icon, and other properties.
/// </summary>
/// <returns>
/// When this method returns, contains a pointer to the KNOWNFOLDER_DEFINITION structure. When no longer needed, the calling
/// application is responsible for calling FreeKnownFolderDefinitionFields to free this resource.
/// </returns>
KNOWNFOLDER_DEFINITION GetFolderDefinition();
}
/// <summary>Exposes methods that create, enumerate or manage existing known folders.</summary>
[ComImport, Guid("8BE2D872-86AA-4d47-B776-32CCA40C7018"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown), CoClass(typeof(CKnownFolderManager))]
[PInvokeData("Shobjidl.h", MSDNShortId = "bb761744")]
public interface IKnownFolderManager
{
/// <summary>Gets the KNOWNFOLDERID that is the equivalent of a legacy CSIDL value.</summary>
/// <param name="nCsidl">The CSIDL value.</param>
/// <returns>When this method returns, contains a pointer to the KNOWNFOLDERID. This pointer is passed uninitialized.</returns>
Guid FolderIdFromCsidl([In] int nCsidl);
/// <summary>Gets the legacy CSIDL value that is the equivalent of a given KNOWNFOLDERID.</summary>
/// <param name="rfid">Reference to the KNOWNFOLDERID.</param>
/// <returns>When this method returns, contains a pointer to the CSIDL value. This pointer is passed uninitialized.</returns>
CSIDL FolderIdToCsidl(in Guid rfid);
/// <summary>
/// <para>Gets an array of all registered known folder IDs. This can be used in enumerating all known folders.</para>
/// </summary>
/// <param name="ppKFId">
/// <para>Type: <c>KNOWNFOLDERID**</c></para>
/// <para>
/// When this method returns, contains a pointer to an array of all KNOWNFOLDERID values registered with the system. Use
/// CoTaskMemFree to free these resources when they are no longer needed.
/// </para>
/// </param>
/// <param name="pCount">
/// <para>Type: <c>UINT*</c></para>
/// <para>
/// When this method returns, contains a pointer to the number of KNOWNFOLDERID values in the array at ppKFId. The [in]
/// functionality of this parameter is not used.
/// </para>
/// </param>
/// <remarks>
/// <para>The caller of this method must have User privileges.</para>
/// <para>You can use StringFromCLSID or StringFromGUID2 to convert the retrieved KNOWNFOLDERID values to strings.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nf-shobjidl_core-iknownfoldermanager-getfolderids HRESULT
// GetFolderIds( KNOWNFOLDERID **ppKFId, UINT *pCount );
[PInvokeData("shobjidl_core.h", MSDNShortId = "3ac09fc4-15c4-4346-94ad-2a4617c463d1")]
void GetFolderIds(out SafeCoTaskMemHandle ppKFId, out uint pCount);
/// <summary>
/// Gets an object that represents a known folder identified by its KNOWNFOLDERID. The object allows you to query certain folder
/// properties, get the current path of the folder, redirect the folder to another location, and get the path of the folder as
/// an ITEMIDLIST.
/// </summary>
/// <param name="rfid">Reference to the KNOWNFOLDERID.</param>
/// <returns>When this method returns, contains an interface pointer to the IKnownFolder object that represents the folder.</returns>
[return: MarshalAs(UnmanagedType.Interface)]
IKnownFolder GetFolder(in Guid rfid);
/// <summary>
/// Gets an object that represents a known folder identified by its canonical name. The object allows you to query certain
/// folder properties, get the current path of the folder, redirect the folder to another location, and get the path of the
/// folder as an ITEMIDLIST.
/// </summary>
/// <param name="pszCanonicalName">
/// A pointer to the non-localized, canonical name for the known folder, stored as a null-terminated Unicode string. If this
/// folder is a common or per-user folder, this value is also used as the value name of the "User Shell Folders" registry
/// settings. This value is retrieved through the pszName member of the folder's KNOWNFOLDER_DEFINITION structure.
/// </param>
/// <returns>
/// When this method returns, contains the address of a pointer to the IKnownFolder object that represents the known folder.
/// </returns>
[return: MarshalAs(UnmanagedType.Interface)]
IKnownFolder GetFolderByName([In, MarshalAs(UnmanagedType.LPWStr)] string pszCanonicalName);
/// <summary>
/// Adds a new known folder to the registry. Used particularly by independent software vendors (ISVs) that are adding one of
/// their own folders to the known folder system.
/// </summary>
/// <param name="rfid">A GUID that represents the known folder.</param>
/// <param name="pKFD">A pointer to a valid KNOWNFOLDER_DEFINITION structure that provides the details of the new folder.</param>
void RegisterFolder(in Guid rfid, in KNOWNFOLDER_DEFINITION pKFD);
/// <summary>
/// Remove a known folder from the registry, which makes it unknown to the known folder system. This method does not remove the
/// folder itself.
/// </summary>
/// <param name="rfid">GUID or KNOWNFOLDERID that represents the known folder.</param>
void UnregisterFolder(in Guid rfid);
/// <summary>
/// Gets an object that represents a known folder based on a file system path. The object allows you to query certain folder
/// properties, get the current path of the folder, redirect the folder to another location, and get the path of the folder as
/// an ITEMIDLIST.
/// </summary>
/// <param name="pszPath">Pointer to a null-terminated Unicode string of length MAX_PATH that contains a path to a known folder.</param>
/// <param name="mode">
/// One of the following values that specify the precision of the match of path and known folder: FFFP_EXACTMATCH = Retrieve
/// only the specific known folder for the given file path; FFFP_NEARESTPARENTMATCH = If an exact match is not found for the
/// given file path, retrieve the first known folder that matches one of its parent folders walking up the parent tree.
/// </param>
/// <returns>
/// When this method returns, contains the address of a pointer to the IKnownFolder object that represents the known folder.
/// </returns>
[return: MarshalAs(UnmanagedType.Interface)]
IKnownFolder FindFolderFromPath([In, MarshalAs(UnmanagedType.LPWStr)] string pszPath, [In] FFFP_MODE mode);
/// <summary>
/// Gets an object that represents a known folder based on an IDList. The object allows you to query certain folder properties,
/// get the current path of the folder, redirect the folder to another location, and get the path of the folder as an ITEMIDLIST.
/// </summary>
/// <param name="pidl">A pointer to the IDList.</param>
/// <returns>
/// When this method returns, contains the address of a pointer to the IKnownFolder object that represents the known folder.
/// </returns>
[return: MarshalAs(UnmanagedType.Interface)]
IKnownFolder FindFolderFromIDList([In] PIDL pidl);
/// <summary>Redirects folder requests for common and per-user folders.</summary>
/// <param name="rfid">A reference to the KNOWNFOLDERID of the folder to be redirected.</param>
/// <param name="hwnd">
/// The handle of the parent window used to display copy engine progress UI dialogs when KF_REDIRECT_WITH_UI i passed in the
/// flags parameter. If no progress dialog is needed, this value can be NULL.
/// </param>
/// <param name="flags">The KF_REDIRECT_FLAGS options for redirection.</param>
/// <param name="pszTargetPath">
/// A pointer to the new path for the folder. This is a null-terminated Unicode string. This value can be NULL.
/// </param>
/// <param name="cFolders">The number of KNOWNFOLDERID values in the array at pExclusion.</param>
/// <param name="pExclusion">
/// Pointer to an array of KNOWNFOLDERID values that refer to subfolders of <paramref name="rfid"/> that should be excluded from
/// the redirection. If no subfolders are excluded, this value can be NULL.
/// </param>
/// <returns>
/// When this method returns, contains the address of a pointer to a null-terminated Unicode string that contains an error
/// message if one was generated. This value can be NULL.
/// </returns>
[return: MarshalAs(UnmanagedType.LPWStr)]
string Redirect(in Guid rfid, [In, Optional] HWND hwnd, [In] KF_REDIRECT_FLAGS flags,
[In, Optional, MarshalAs(UnmanagedType.LPWStr)] string pszTargetPath, [In] uint cFolders, [In] Guid[] pExclusion);
}
/// <summary>Frees the allocated fields in the result from IKnownFolder::GetFolderDefinition.</summary>
/// <param name="pKFD">
/// <para>Type: <c>KNOWNFOLDER_DEFINITION*</c></para>
/// <para>A pointer to a KNOWNFOLDER_DEFINITION structure that contains information about the given known folder.</para>
/// </param>
/// <returns>This function does not return a value.</returns>
/// <remarks>
/// This is an inline helper function that calls CoTaskMemFree on the fields in the structure that need to be freed. Its
/// implementation can be seen in the header file.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nf-shobjidl_core-freeknownfolderdefinitionfields void
// FreeKnownFolderDefinitionFields( KNOWNFOLDER_DEFINITION *pKFD );
[PInvokeData("shobjidl_core.h", MSDNShortId = "0ad17dd3-e612-403a-b8c3-e93d5f259c1f")]
public static void FreeKnownFolderDefinitionFields(in KNOWNFOLDER_DEFINITION pKFD)
{
foreach (var fi in pKFD.GetType().GetFields().Where(f => f.FieldType == typeof(StrPtrUni)))
Marshal.FreeCoTaskMem((IntPtr)(StrPtrUni)fi.GetValue(pKFD));
}
/// <summary>Gets an array of all registered known folder IDs. This can be used in enumerating all known folders.</summary>
/// <param name="mgr">The <see cref="IKnownFolderManager"/> instance.</param>
/// <returns>An enumeration of all known folder Guid values registered with the system.</returns>
/// <remarks>
/// <para>The caller of this method must have User privileges.</para>
/// <para>You can use StringFromCLSID or StringFromGUID2 to convert the retrieved KNOWNFOLDERID values to strings.</para>
/// </remarks>
// https://docs.microsoft.com/en-us/windows/desktop/api/shobjidl_core/nf-shobjidl_core-iknownfoldermanager-getfolderids HRESULT
// GetFolderIds( KNOWNFOLDERID **ppKFId, UINT *pCount );
[PInvokeData("shobjidl_core.h", MSDNShortId = "3ac09fc4-15c4-4346-94ad-2a4617c463d1")]
public static IEnumerable<Guid> GetFolderIds(this IKnownFolderManager mgr) { mgr.GetFolderIds(out var mem, out var c); using (mem) return mem.ToArray<Guid>((int)c); }
/// <summary>Gets an array of all registered known folder IDs. This can be used in enumerating all known folders.</summary>
/// <param name="mgr">The <see cref="IKnownFolderManager"/> instance.</param>
/// <returns>An enumeration of all KNOWNFOLDERID values registered with the system.</returns>
/// <remarks>The caller of this method must have User privileges.</remarks>
[PInvokeData("shobjidl_core.h", MSDNShortId = "3ac09fc4-15c4-4346-94ad-2a4617c463d1")]
public static IEnumerable<KNOWNFOLDERID> GetKnownFolderIds(this IKnownFolderManager mgr)
{
foreach (var id in mgr.GetFolderIds())
if (AssociateAttribute.TryEnumLookup<KNOWNFOLDERID>(id, out var kf))
yield return kf;
}
/// <summary>Extension method to simplify using the <see cref="IKnownFolder.GetShellItem"/> method.</summary>
/// <typeparam name="T">Type of the interface to get.</typeparam>
/// <param name="fv">An <see cref="IKnownFolder"/> instance.</param>
/// <param name="dwFlags">
/// Flags that specify special retrieval options. This value can be 0; otherwise, one or more of the KNOWN_FOLDER_FLAG values.
/// </param>
/// <returns>Receives the interface pointer requested in <typeparamref name="T"/>.</returns>
public static T GetShellItem<T>(this IKnownFolder fv, [In] KNOWN_FOLDER_FLAG dwFlags = KNOWN_FOLDER_FLAG.KF_FLAG_DEFAULT) where T : class => (T)fv.GetShellItem(dwFlags, typeof(T).GUID);
/// <summary>Defines the specifics of a known folder.</summary>
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
[PInvokeData("Shobjidl.h", MSDNShortId = "bb773325")]
public struct KNOWNFOLDER_DEFINITION
{
/// <summary>A single value from the KF_CATEGORY constants that classifies the folder as virtual, fixed, common, or per-user.</summary>
public KF_CATEGORY category;
/// <summary>
/// A pointer to the non-localized, canonical name for the known folder, stored as a null-terminated Unicode string. If this
/// folder is a common or per-user folder, this value is also used as the value name of the "User Shell Folders" registry
/// settings. This name is meant to be a unique, human-readable name. Third parties are recommended to follow the format
/// Company.Application.Name. The name given here should not be confused with the display name.
/// </summary>
public StrPtrUni pszName;
/// <summary>
/// A pointer to a short description of the known folder, stored as a null-terminated Unicode string. This description should
/// include the folder's purpose and usage.
/// </summary>
public StrPtrUni pszDescription;
/// <summary>
/// A KNOWNFOLDERID value that names another known folder to serve as the parent folder. Applies to common and per-user folders
/// only. This value is used in conjunction with pszRelativePath. See Remarks for more details. This value is optional if no
/// value is provided for pszRelativePath.
/// </summary>
public Guid fidParent;
/// <summary>
/// Optional. A pointer to a path relative to the parent folder specified in fidParent. This is a null-terminated Unicode
/// string, refers to the physical file system path, and is not localized. Applies to common and per-user folders only. See
/// Remarks for more details.
/// </summary>
public StrPtrUni pszRelativePath;
/// <summary>
/// A pointer to the Shell namespace folder path of the folder, stored as a null-terminated Unicode string. Applies to virtual
/// folders only. For example, Control Panel has a parsing name of ::%CLSID_MyComputer%\::%CLSID_ControlPanel%.
/// </summary>
public StrPtrUni pszParsingName;
/// <summary>
/// Optional. A pointer to the default tooltip resource used for this known folder when it is created. This is a null-terminated
/// Unicode string in this form:
/// <para><c>Module name, Resource ID</c></para>
/// <para>
/// For example, @%_SYS_MOD_PATH%,-12688 is the tooltip for Common Pictures.When the folder is created, this string is stored in
/// that folder's copy of Desktop.ini. It can be changed later by other Shell APIs. This resource might be localized.
/// </para>
/// <para>This information is not required for virtual folders.</para>
/// </summary>
public StrPtrUni pszTooltip;
/// <summary>
/// Optional. A pointer to the default localized name resource used when the folder is created. This is a null-terminated
/// Unicode string in this form:
/// <para><c>Module name, Resource ID</c></para>
/// <para>
/// When the folder is created, this string is stored in that folder's copy of Desktop.ini. It can be changed later by other
/// Shell APIs.
/// </para>
/// <para>This information is not required for virtual folders.</para>
/// </summary>
public StrPtrUni pszLocalizedName;
/// <summary>
/// Optional. A pointer to the default icon resource used when the folder is created. This is a null-terminated Unicode string
/// in this form:
/// <para><c>Module name, Resource ID</c></para>
/// <para>
/// When the folder is created, this string is stored in that folder's copy of Desktop.ini. It can be changed later by other
/// Shell APIs.
/// </para>
/// <para>This information is not required for virtual folders.</para>
/// </summary>
public StrPtrUni pszIcon;
/// <summary>
/// Optional. A pointer to a Security Descriptor Definition Language format string. This is a null-terminated Unicode string
/// that describes the default security descriptor that the folder receives when it is created. If this parameter is NULL, the
/// new folder inherits the security descriptor of its parent. This is particularly useful for common folders that are accessed
/// by all users.
/// </summary>
public StrPtrUni pszSecurity;
/// <summary>
/// Optional. Default file system attributes given to the folder when it is created. For example, the file could be hidden and
/// read-only (FILE_ATTRIBUTE_HIDDEN and FILE_ATTRIBUTE_READONLY). For a complete list of possible values, see the
/// dwFlagsAndAttributes parameter of the CreateFile function. Set to -1 if not needed.
/// </summary>
public FileFlagsAndAttributes dwAttributes;
/// <summary>
/// Optional. One of more values from the KF_DEFINITION_FLAGS enumeration that allow you to restrict redirection, allow PC-to-PC
/// roaming, and control the time at which the known folder is created. Set to 0 if not needed.
/// </summary>
public KF_DEFINITION_FLAGS kfdFlags;
/// <summary>
/// One of the FOLDERTYPEID values that identifies the known folder type based on its contents (such as documents, music, or
/// photographs). This value is a GUID.
/// </summary>
public Guid ftidType;
/// <summary>Frees the allocated fields in the result from IKnownFolder::GetFolderDefinition.</summary>
/// <remarks>
/// This is an inline helper function that calls CoTaskMemFree on the fields in the structure that need to be freed. Its
/// implementation can be seen in the header file.
/// </remarks>
// https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nf-shobjidl_core-freeknownfolderdefinitionfields void
// FreeKnownFolderDefinitionFields( KNOWNFOLDER_DEFINITION *pKFD );
[PInvokeData("shobjidl_core.h", MSDNShortId = "NF:shobjidl_core.FreeKnownFolderDefinitionFields")]
public void FreeKnownFolderDefinitionFields()
{
Marshal.FreeCoTaskMem((IntPtr)pszName);
Marshal.FreeCoTaskMem((IntPtr)pszDescription);
Marshal.FreeCoTaskMem((IntPtr)pszRelativePath);
Marshal.FreeCoTaskMem((IntPtr)pszParsingName);
Marshal.FreeCoTaskMem((IntPtr)pszTooltip);
Marshal.FreeCoTaskMem((IntPtr)pszLocalizedName);
Marshal.FreeCoTaskMem((IntPtr)pszIcon);
Marshal.FreeCoTaskMem((IntPtr)pszSecurity);
}
}
/// <summary>Class interface for IKnownFolderManager.</summary>
[ComImport, Guid("4df0c730-df9d-4ae3-9153-aa6b82e9795a"), ClassInterface(ClassInterfaceType.None)]
public class CKnownFolderManager { }
/// <summary>Provides information about a <see cref="KNOWNFOLDERID"/>.</summary>
[AttributeUsage(AttributeTargets.Field)]
internal class KnownFolderDetailAttribute : AssociateAttribute
{
/// <summary>The equivalent SpecialFolder.</summary>
public Environment.SpecialFolder Equivalent = (Environment.SpecialFolder)0XFFFF;
/// <summary>Initializes a new instance of the <see cref="KnownFolderDetailAttribute"/> class with a GUID for the <see cref="KNOWNFOLDERID"/>.</summary>
/// <param name="knownFolderGuid">The GUID for the <see cref="KNOWNFOLDERID"/>.</param>
public KnownFolderDetailAttribute(string knownFolderGuid) : base(knownFolderGuid) { }
}
}
}