// IShellLinkDataList::GetFlags()/SetFlags() typedef enum { SLDF_DEFAULT = 0x00000000, SLDF_HAS_ID_LIST = 0x00000001, // Shell link saved with ID list SLDF_HAS_LINK_INFO = 0x00000002, // Shell link saved with LinkInfo SLDF_HAS_NAME = 0x00000004, SLDF_HAS_RELPATH = 0x00000008, SLDF_HAS_WORKINGDIR = 0x00000010, SLDF_HAS_ARGS = 0x00000020, SLDF_HAS_ICONLOCATION = 0x00000040, SLDF_UNICODE = 0x00000080, // the strings are unicode SLDF_FORCE_NO_LINKINFO = 0x00000100, // disable LINKINFO tracking information (used to track network drives and compute UNC paths if one exists) SLDF_HAS_EXP_SZ = 0x00000200, // the link contains expandable env strings SLDF_RUN_IN_SEPARATE = 0x00000400, // Run the 16-bit target exe in a separate VDM/WOW #if (NTDDI_VERSION < NTDDI_VISTA) SLDF_HAS_LOGO3ID = 0x00000800, // not used anymore #endif SLDF_HAS_DARWINID = 0x00001000, // MSI (Darwin) link that can be installed on demand SLDF_RUNAS_USER = 0x00002000, // Run target as a different user SLDF_HAS_EXP_ICON_SZ = 0x00004000, // contains expandable env string for icon path #if (NTDDI_VERSION >= NTDDI_WINXP) SLDF_NO_PIDL_ALIAS = 0x00008000, // disable IDList alias mapping when parsing the IDList from the path SLDF_FORCE_UNCNAME = 0x00010000, // make GetPath() prefer the UNC name to the local name SLDF_RUN_WITH_SHIMLAYER = 0x00020000, // activate target of this link with shim layer active #if (NTDDI_VERSION >= NTDDI_VISTA) SLDF_FORCE_NO_LINKTRACK = 0x00040000, // disable ObjectID tracking information SLDF_ENABLE_TARGET_METADATA = 0x00080000, // enable caching of target metadata into link SLDF_DISABLE_LINK_PATH_TRACKING = 0x00100000, // disable EXP_SZ_LINK_SIG tracking SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING = 0x00200000, // disable KnownFolder tracking information (EXP_KNOWN_FOLDER) #if (NTDDI_VERSION >= NTDDI_WIN7) SLDF_NO_KF_ALIAS = 0x00400000, // disable Known Folder alias mapping when loading the IDList during deserialization SLDF_ALLOW_LINK_TO_LINK = 0x00800000, // allows this link to point to another shell link - must only be used when it is not possible to create cycles SLDF_UNALIAS_ON_SAVE = 0x01000000, // unalias the IDList when saving SLDF_PREFER_ENVIRONMENT_PATH = 0x02000000, // the IDList is not persisted, instead it is recalculated from the path with environmental variables at load time // we don't hit the disk to recalculate the IDList (the result is a simple IDList). also Resolve does nothing // if SetPath is called and the path does not have environmental variable in it, SLDF_PREFER_ENVIRONMENT_PATH is removed SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET = 0x04000000, // if target is a UNC location on a local machine, keep the local target in addition to the remote one #if (NTDDI_VERSION >= NTDDI_WIN8) SLDF_PERSIST_VOLUME_ID_RELATIVE = 0x08000000, // persist target idlist in its volume ID-relative form to avoid dependency on drive letters SLDF_VALID = 0x0FFFF7FF, // bits that are valid for ::SetFlags() #else SLDF_VALID = 0x07FFF7FF, // bits that are valid for ::SetFlags() #endif #else SLDF_VALID = 0x003FF7FF, // bits that are valid for ::SetFlags() #endif #endif SLDF_RESERVED = (int) 0x80000000, // Reserved-- so we can use the low word as an index value in the future #endif } SHELL_LINK_DATA_FLAGS;