zoukankan      html  css  js  c++  java
  • SHGetSpecialFolderLocation获取开始文件夹

    SHGetSpecialFolderLocation函数可以获取windows 特殊目录

    函数原型:(MSDN官方链接:https://msdn.microsoft.com/en-us/library/bb762203(VS.85).aspx)

    1 HRESULT SHGetSpecialFolderLocation(
    2   _In_  HWND             hwndOwner,  // 保留值,填NULL
    3   _In_  int              nFolder,   // 一个CSIDL标识的相应文件夹值
    4   _Out_ PIDLIST_ABSOLUTE *ppidl    // 一个PIDL,指定相对于名称空间(桌面)根目录的文件夹位置。
    5 );

    如果此函数成功,则返回S_OK否则,它将返回一个HRESULT错误代码。

    函数所属:

    Shlobj_core.h(包括Shlobj.h)

    Shell32.lib

    Shell32.dll

    ___________________________________________________________________________________________________________________

    主要是第二个参数,一个CLSID,对应列表:(MSDN官方链接:https://msdn.microsoft.com/en-us/library/bb762494(v=vs.85).aspx)

    恒/值描述
    CSIDL_ADMINTOOLS
    FOLDERID_AdminTools

    版本5.0用于存储单个用户的管理工具的文件系统目录。MMC会将自定义的控制台保存到该目录中,并且会随用户漫游。

    CSIDL_ALTSTARTUP
    FOLDERID_Startup

    与用户的非本地化启动程序组对应的文件系统目录。此值在Windows Vista中被识别为向后兼容,但该文件夹本身不再存在。

    CSIDL_APPDATA
    FOLDERID_RoamingAppData

    版本4.71作为应用程序特定数据的公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  Application Data。

    CSIDL_BITBUCKET
    FOLDERID_RecycleBinFolder

    包含用户回收站中对象的虚拟文件夹

    CSIDL_CDBURN_AREA
    FOLDERID_CDBurning

    版本6.0作为等待写入CD的文件的临时区域的文件系统目录。一个典型的路径是C: Documents and Settings  用户名  Local Settings Application Data Microsoft CD Burning。

    CSIDL_COMMON_ADMINTOOLS
    FOLDERID_CommonAdminTools

    版本5.0包含计算机所有用户的管理工具的文件系统目录。

    CSIDL_COMMON_ALTSTARTUP
    FOLDERID_CommonStartup

    与所有用户的非本地化启动程序组相对应的文件系统目录。此值在Windows Vista中被识别为向后兼容,但该文件夹本身不再存在。

    CSIDL_COMMON_APPDATA
    FOLDERID_ProgramData

    版本5.0包含所有用户的应用程序数据的文件系统目录。典型的路径是C: Documents and Settings All Users Application Data。该文件夹用于不是用户特定的应用程序数据。例如,应用程序可以将拼写检查字典,剪贴画数据库或日志文件存储在CSIDL_COMMON_APPDATA文件夹中。此信息不会漫游,并可供任何使用计算机的人使用。

    CSIDL_COMMON_DESKTOPDIRECTORY
    FOLDERID_PublicDesktop

    包含桌面上为所有用户显示的文件和文件夹的文件系统目录。典型的路径是C: Documents and Settings All Users Desktop。

    CSIDL_COMMON_DOCUMENTS
    FOLDERID_PublicDocuments

    包含所有用户共有文档的文件系统目录。典型的路径是C: Documents and Settings All Users Documents。

    CSIDL_COMMON_FAVORITES
    FOLDERID_Favorites

    文件系统目录,用作所有用户共同喜爱的项目的公共存储库。

    CSIDL_COMMON_MUSIC
    FOLDERID_PublicMusic

    版本6.0作为所有用户共有的音乐文件存储库的文件系统目录。典型路径是C: Documents and Settings All Users Documents My Music。

    CSIDL_COMMON_OEM_LINKS
    FOLDERID_CommonOEMLinks

    此值在Windows Vista中被识别为向后兼容,但文件夹本身不再使用。

    CSIDL_COMMON_PICTURES
    FOLDERID_PublicPictures

    版本6.0用作所有用户共有的图像文件存储库的文件系统目录。典型的路径是C: Documents and Settings All Users Documents My Pictures。

    CSIDL_COMMON_PROGRAMS
    FOLDERID_CommonPrograms

    包含为所有用户显示在“ 开始”菜单上的公共程序组的目录的文件系统目录一个典型的路径是C: Documents and Settings All Users Start Menu Programs。

    CSIDL_COMMON_STARTMENU
    FOLDERID_CommonStartMenu

    包含为所有用户显示在“ 开始”菜单上的程序和文件夹的文件系统目录典型的路径是C: Documents and Settings All Users Start Menu。

    CSIDL_COMMON_STARTUP
    FOLDERID_CommonStartup

    包含出现在所有用户的启动文件夹中的程序的文件系统目录。一个典型的路径是C: Documents and Settings All Users Start Menu Programs Startup。

    CSIDL_COMMON_TEMPLATES
    FOLDERID_CommonTemplates

    包含可供所有用户使用的模板的文件系统目录。典型的路径是C: Documents and Settings All Users Templates。

    CSIDL_COMMON_VIDEO
    FOLDERID_PublicVideos

    版本6.0用作所有用户共有的视频文件存储库的文件系统目录。典型的路径是C: Documents and Settings All Users Documents My Videos。

    CSIDL_COMPUTERSNEARME
    FOLDERID_NetworkFolder

    表示工作组中其他计算机的文件夹。

    CSIDL_CONNECTIONS
    FOLDERID_ConnectionsFolder

    表示网络连接的虚拟文件夹,包含网络和拨号连接。

    CSIDL_CONTROLS
    FOLDERID_ControlPanelFolder

    包含控制面板应用程序的图标的虚拟文件夹。

    CSIDL_COOKIES
    FOLDERID_Cookies

    用作Internet Cookie公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  Cookies。

    CSIDL_DESKTOP
    FOLDERID_Desktop

    代表Windows桌面的虚拟文件夹,即命名空间的根。

    CSIDL_DESKTOPDIRECTORY
    FOLDERID_Desktop

    用于在桌面上物理存储文件对象的文件系统目录(不要与桌面文件夹本身混淆)。典型的路径是C: Documents and Settings  username  Desktop。

    CSIDL_DRIVES
    FOLDERID_ComputerFolder

    代表我的电脑的虚拟文件夹,包含本地计算机上的所有内容:存储设备,打印机和控制面板。该文件夹还可以包含映射的网络驱动器。

    CSIDL_FAVORITES
    FOLDERID_Favorites

    作为用户最喜爱的项目的公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  Favorites。

    CSIDL_FONTS
    FOLDERID_Fonts

    包含字体的虚拟文件夹。一个典型的路径是C: Windows Fonts。

    CSIDL_HISTORY
    FOLDERID_History

    用作Internet历史记录项目公共存储库的文件系统目录。

    CSIDL_INTERNET
    FOLDERID_InternetFolder

    Internet Explorer的虚拟文件夹。

    CSIDL_INTERNET_CACHE
    FOLDERID_InternetCache

    版本4.72用作临时Internet文件公共存储库的文件系统目录。一个典型的路径是C: Documents and Settings  username  Local Settings Temporary Internet Files。

    CSIDL_LOCAL_APPDATA
    FOLDERID_LocalAppData

    版本5.0作为本地(非漫游)应用程序的数据存储库的文件系统目录。一个典型的路径是C: Documents and Settings  username  Local Settings Application Data。

    CSIDL_MYDOCUMENTS
    FOLDERID_Documents

    版本6.0代表我的文档桌面项目的虚拟文件夹。该值等同于CSIDL_PERSONAL

    CSIDL_MYMUSIC
    FOLDERID_Music

    用作音乐文件公共存储库的文件系统目录。一个典型的路径是C: Documents and Settings User My Documents My Music。

    CSIDL_MYPICTURES
    FOLDERID_Pictures

    版本5.0用作图像文件公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  My Documents My Pictures。

    CSIDL_MYVIDEO
    FOLDERID_Videos

    版本6.0作为视频文件公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  My Documents My Videos。

    CSIDL_NETHOOD
    FOLDERID_NetHood

    包含“ 网上邻居”虚拟文件夹中可能存在的链接对象的文件系统目录它与表示网络名称空间根的CSIDL_NETWORK不同典型的路径是C: Documents and Settings  username  NetHood。

    CSIDL_NETWORK
    FOLDERID_NetworkFolder

    代表网络邻居的虚拟文件夹,网络名称空间层次结构的根。

    CSIDL_PERSONAL
    FOLDERID_Documents

    版本6.0代表我的文档桌面项目的虚拟文件夹。这相当于CSIDL_MYDOCUMENTS

    在版本6.0之前用于物理存储用户公共文档库的文件系统目录。典型的路径是C: Documents and Settings  username  My Documents。这应该与命名空间中的虚拟“ 我的文档”文件夹区分开来要访问该虚拟文件夹,请使用SHGetFolderLocation,它返回虚拟位置ITEMIDLIST,或者参考管理文件系统中描述的技术

    CSIDL_PRINTERS
    FOLDERID_PrintersFolder

    包含已安装打印机的虚拟文件夹。

    CSIDL_PRINTHOOD
    FOLDERID_PrintHood

    包含Printers虚拟文件夹中可以存在的链接对象的文件系统目录典型的路径是C: Documents and Settings  username  PrintHood。

    CSIDL_PROFILE
    FOLDERID_Profile

    版本5.0用户的个人资料文件夹。典型的路径是C: Users  username应用程序不应在此级别创建文件或文件夹; 他们应该将他们的数据放在CSIDL_APPDATACSIDL_LOCAL_APPDATA引用的位置下但是,如果要创建新的已知文件夹,则由CSIDL_PROFILE引用的配置文件根目录是适当的。

    CSIDL_PROGRAM_FILES
    FOLDERID_ProgramFiles

    版本5.0Program Files文件夹。典型的路径是C: Program Files。

    CSIDL_PROGRAM_FILESX86
    FOLDERID_ProgramFilesX86
     
    CSIDL_PROGRAM_FILES_COMMON
    FOLDERID_ProgramFilesCommon

    版本5.0跨应用程序共享的组件的文件夹。一个典型的路径是C: Program Files Common。仅适用于Windows XP。

    CSIDL_PROGRAM_FILES_COMMONX86
    FOLDERID_ProgramFilesCommonX86
     
    CSIDL_PROGRAMS
    FOLDERID_Programs

    包含用户程序组(其本身是文件系统目录)的文件系统目录。典型的路径是C: Documents and Settings  username  Start Menu Programs。

    CSIDL_RECENT
    FOLDERID_Recent

    包含用户最近使用文档的快捷方式的文件系统目录。一个典型的路径是C: Documents and Settings  username  My Recent Documents。要在此文件夹中创建快捷方式,请使用SHAddToRecentDocs除了创建快捷方式外,此功能还会更新Shell的最近文档列表,并将快捷方式添加到“ 开始”菜单的“ 我的最近文档”菜单中。

    CSIDL_RESOURCES
    FOLDERID_ResourceDir

    Windows Vista。包含资源数据的文件系统目录。典型的路径是C: Windows Resources。

    CSIDL_RESOURCES_LOCALIZED
    FOLDERID_LocalizedResourcesDir
     
    CSIDL_SENDTO
    FOLDERID_SendTo

    包含“ 发送到”菜单项的文件系统目录典型的路径是C: Documents and Settings  username  SendTo。

    CSIDL_STARTMENU
    FOLDERID_StartMenu

    包含“ 开始”菜单项的文件系统目录一个典型的路径是C: Documents and Settings  username  Start Menu。

    CSIDL_STARTUP
    FOLDERID_Startup

    与用户的启动程序组对应的文件系统目录。只要关联用户登录,系统就会启动这些程序。一个典型的路径是C: Documents and Settings  用户名 开始菜单程序启动。

    CSIDL_SYSTEM
    FOLDERID_System

    版本5.0Windows系统文件夹。一个典型的路径是C: Windows System32。

    CSIDL_SYSTEMX86
    FOLDERID_SystemX86
     
    CSIDL_TEMPLATES
    FOLDERID_Templates

    作为文档模板公共存储库的文件系统目录。典型的路径是C: Documents and Settings  username  Templates。

    CSIDL_WINDOWS
    FOLDERID_Windows

    版本5.0Windows目录或SYSROOT。这对应于%windir%或%SYSTEMROOT%环境变量。典型的路径是C: Windows。

     
    CSIDL_FLAG_CREATE
    KF_FLAG_CREATE

    版本5.0结合另一个CSIDL强制创建关联的文件夹(如果它不存在)。

    CSIDL_FLAG_DONT_UNEXPAND
    KF_FLAG_DONT_UNEXPAND

    与另一个CSIDL常量组合以确保环境变量的扩展。

    CSIDL_FLAG_DONT_VERIFY
    KF_FLAG_DONT_VERIFY

    结合使用另一个CSIDL常量(CSIDL_FLAG_CREATE除外) ,以返回未验证的文件夹路径,而不尝试创建或初始化该文件夹。

    CSIDL_FLAG_NO_ALIAS
    KF_FLAG_NO_ALIAS

    与另一个CSIDL常量组合,以确保检索文件夹的真实系统路径,不含任何别名占位符,例如由SHGetFolderLocation返回的%USERPROFILE%。此标志对SHGetFolderPath返回的路径没有影响。

    CSIDL_FLAG_PER_USER_INIT
     
    CSIDL_FLAG_MASK

    任何有效的CSIDL标志值的掩码。

    调用例子,获取 开始菜单启动目录:

     1 #include <iostream>
     2 #include <Windows.h>
     3 #include <ShlObj.h>
     4 
     5 #pragma comment(lib,"shell32.lib")
     6 
     7 using namespace std;
     8 
     9 int main(void)
    10 {
    11     CHAR szDir[MAX_PATH] = { 0 };
    12     LPITEMIDLIST pidl = NULL;
    13     SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_ALTSTARTUP, &pidl);
    14     SHGetPathFromIDList(pidl, szDir);
    15     cout << szDir << endl;
    16     system("pause");
    17     return 0;
    18 }

    图:

  • 相关阅读:
    磁盘IO性能监控(Linux 和 Windows)
    cacti监控linux和windows磁盘IO
    如何重新划分linux分区大小
    OCX控件打包成CAB并实现数字签名过程
    手把手教你用CAB发布OCX的简单办法
    WebLogic 11g重置用户密码
    rxswift的双向绑定
    投资的三个层次:投资的道与术--投资的一级算法
    《DSL》笔记一、什么是DSL(转)
    编程语言与世界观
  • 原文地址:https://www.cnblogs.com/biaoge140/p/9030072.html
Copyright © 2011-2022 走看看