SHGetSpecialFolderLocation获取开始文件夹
SHGetSpecialFolderLocation函数可以获取windows 特殊目录
函数原型:(MSDN官方链接:https://msdn.microsoft.com/en-us/library/bb762203(VS.85).aspx)
HRESULT SHGetSpecialFolderLocation(
_In_ HWND hwndOwner, // 保留值,填NULL
_In_ int nFolder, // 一个CSIDL标识的相应文件夹值
_Out_ PIDLIST_ABSOLUTE *ppidl // 一个PIDL,指定相对于名称空间(桌面)根目录的文件夹位置。
);
如果此函数成功,则返回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)
| 恒/值 | 描述 | 
|---|---|
  | 
 版本5.0。用于存储单个用户的管理工具的文件系统目录。MMC会将自定义的控制台保存到该目录中,并且会随用户漫游。  | 
  | 
 与用户的非本地化启动程序组对应的文件系统目录。此值在Windows Vista中被识别为向后兼容,但该文件夹本身不再存在。  | 
  | 
 版本4.71。作为应用程序特定数据的公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ Application Data。  | 
  | 
 包含用户回收站中对象的虚拟文件夹。  | 
  | 
 版本6.0。作为等待写入CD的文件的临时区域的文件系统目录。一个典型的路径是C:\ Documents and Settings \ 用户名 \ Local Settings \ Application Data \ Microsoft \ CD Burning。  | 
  | 
 版本5.0。包含计算机所有用户的管理工具的文件系统目录。  | 
  | 
 与所有用户的非本地化启动程序组相对应的文件系统目录。此值在Windows Vista中被识别为向后兼容,但该文件夹本身不再存在。  | 
  | 
 版本5.0。包含所有用户的应用程序数据的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Application Data。该文件夹用于不是用户特定的应用程序数据。例如,应用程序可以将拼写检查字典,剪贴画数据库或日志文件存储在CSIDL_COMMON_APPDATA文件夹中。此信息不会漫游,并可供任何使用计算机的人使用。  | 
  | 
 包含桌面上为所有用户显示的文件和文件夹的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Desktop。  | 
  | 
 包含所有用户共有文档的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Documents。  | 
  | 
 文件系统目录,用作所有用户共同喜爱的项目的公共存储库。  | 
  | 
 版本6.0。作为所有用户共有的音乐文件存储库的文件系统目录。典型路径是C:\ Documents and Settings \ All Users \ Documents \ My Music。  | 
  | 
 此值在Windows Vista中被识别为向后兼容,但文件夹本身不再使用。  | 
  | 
 版本6.0。用作所有用户共有的图像文件存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Documents \ My Pictures。  | 
  | 
 包含为所有用户显示在“ 开始”菜单上的公共程序组的目录的文件系统目录。一个典型的路径是C:\ Documents and Settings \ All Users \ Start Menu \ Programs。  | 
  | 
 包含为所有用户显示在“ 开始”菜单上的程序和文件夹的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Start Menu。  | 
  | 
 包含出现在所有用户的启动文件夹中的程序的文件系统目录。一个典型的路径是C:\ Documents and Settings \ All Users \ Start Menu \ Programs \ Startup。  | 
  | 
 包含可供所有用户使用的模板的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Templates。  | 
  | 
 版本6.0。用作所有用户共有的视频文件存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ All Users \ Documents \ My Videos。  | 
  | 
 表示工作组中其他计算机的文件夹。  | 
  | 
 表示网络连接的虚拟文件夹,包含网络和拨号连接。  | 
  | 
 包含控制面板应用程序的图标的虚拟文件夹。  | 
  | 
 用作Internet Cookie公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ Cookies。  | 
  | 
 代表Windows桌面的虚拟文件夹,即命名空间的根。  | 
  | 
 用于在桌面上物理存储文件对象的文件系统目录(不要与桌面文件夹本身混淆)。典型的路径是C:\ Documents and Settings \ username \ Desktop。  | 
  | 
 代表我的电脑的虚拟文件夹,包含本地计算机上的所有内容:存储设备,打印机和控制面板。该文件夹还可以包含映射的网络驱动器。  | 
  | 
 作为用户最喜爱的项目的公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ Favorites。  | 
  | 
 包含字体的虚拟文件夹。一个典型的路径是C:\ Windows \ Fonts。  | 
  | 
 用作Internet历史记录项目公共存储库的文件系统目录。  | 
  | 
 Internet Explorer的虚拟文件夹。  | 
  | 
 版本4.72。用作临时Internet文件公共存储库的文件系统目录。一个典型的路径是C:\ Documents and Settings \ username \ Local Settings \ Temporary Internet Files。  | 
  | 
 版本5.0。作为本地(非漫游)应用程序的数据存储库的文件系统目录。一个典型的路径是C:\ Documents and Settings \ username \ Local Settings \ Application Data。  | 
  | 
 版本6.0。代表我的文档桌面项目的虚拟文件夹。该值等同于CSIDL_PERSONAL。  | 
  | 
 用作音乐文件公共存储库的文件系统目录。一个典型的路径是C:\ Documents and Settings \ User \ My Documents \ My Music。  | 
  | 
 版本5.0。用作图像文件公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ My Documents \ My Pictures。  | 
  | 
 版本6.0。作为视频文件公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ My Documents \ My Videos。  | 
  | 
 包含“ 网上邻居”虚拟文件夹中可能存在的链接对象的文件系统目录。它与表示网络名称空间根的CSIDL_NETWORK不同。典型的路径是C:\ Documents and Settings \ username \ NetHood。  | 
  | 
 代表网络邻居的虚拟文件夹,网络名称空间层次结构的根。  | 
  | 
 版本6.0。代表我的文档桌面项目的虚拟文件夹。这相当于CSIDL_MYDOCUMENTS。 在版本6.0之前。用于物理存储用户公共文档库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ My Documents。这应该与命名空间中的虚拟“ 我的文档”文件夹区分开来。要访问该虚拟文件夹,请使用SHGetFolderLocation,它返回虚拟位置的ITEMIDLIST,或者参考管理文件系统中描述的技术。  | 
  | 
 包含已安装打印机的虚拟文件夹。  | 
  | 
 包含Printers虚拟文件夹中可以存在的链接对象的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ PrintHood。  | 
  | 
 版本5.0。用户的个人资料文件夹。典型的路径是C:\ Users \ username。应用程序不应在此级别创建文件或文件夹; 他们应该将他们的数据放在CSIDL_APPDATA或CSIDL_LOCAL_APPDATA引用的位置下。但是,如果要创建新的已知文件夹,则由CSIDL_PROFILE引用的配置文件根目录是适当的。  | 
  | 
 版本5.0。Program Files文件夹。典型的路径是C:\ Program Files。  | 
  | 
|
  | 
 版本5.0。跨应用程序共享的组件的文件夹。一个典型的路径是C:\ Program Files \ Common。仅适用于Windows XP。  | 
  | 
|
  | 
 包含用户程序组(其本身是文件系统目录)的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ Start Menu \ Programs。  | 
  | 
 包含用户最近使用文档的快捷方式的文件系统目录。一个典型的路径是C:\ Documents and Settings \ username \ My Recent Documents。要在此文件夹中创建快捷方式,请使用SHAddToRecentDocs。除了创建快捷方式外,此功能还会更新Shell的最近文档列表,并将快捷方式添加到“ 开始”菜单的“ 我的最近文档”子菜单中。  | 
  | 
 Windows Vista。包含资源数据的文件系统目录。典型的路径是C:\ Windows \ Resources。  | 
  | 
|
  | 
 包含“ 发送到”菜单项的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ SendTo。  | 
  | 
 包含“ 开始”菜单项的文件系统目录。一个典型的路径是C:\ Documents and Settings \ username \ Start Menu。  | 
  | 
 与用户的启动程序组对应的文件系统目录。只要关联用户登录,系统就会启动这些程序。一个典型的路径是C:\ Documents and Settings \ 用户名 \开始菜单\程序\启动。  | 
  | 
 版本5.0。Windows系统文件夹。一个典型的路径是C:\ Windows \ System32。  | 
  | 
|
  | 
 作为文档模板公共存储库的文件系统目录。典型的路径是C:\ Documents and Settings \ username \ Templates。  | 
  | 
 版本5.0。Windows目录或SYSROOT。这对应于%windir%或%SYSTEMROOT%环境变量。典型的路径是C:\ Windows。  | 
  | 
|
  | 
 版本5.0。结合另一个CSIDL强制创建关联的文件夹(如果它不存在)。  | 
  | 
 与另一个CSIDL常量组合以确保环境变量的扩展。  | 
  | 
 结合使用另一个CSIDL常量(CSIDL_FLAG_CREATE除外) ,以返回未验证的文件夹路径,而不尝试创建或初始化该文件夹。  | 
  | 
 与另一个CSIDL常量组合,以确保检索文件夹的真实系统路径,不含任何别名占位符,例如由SHGetFolderLocation返回的%USERPROFILE%。此标志对SHGetFolderPath返回的路径没有影响。  | 
  | 
|
  | 
 任何有效的CSIDL标志值的掩码。  | 
调用例子,获取 开始菜单启动目录:
#include <iostream>
#include <Windows.h>
#include <ShlObj.h> #pragma comment(lib,"shell32.lib") using namespace std; int main(void)
{
CHAR szDir[MAX_PATH] = { };
LPITEMIDLIST pidl = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_ALTSTARTUP, &pidl);
SHGetPathFromIDList(pidl, szDir);
cout << szDir << endl;
system("pause");
return ;
}
图:

SHGetSpecialFolderLocation获取开始文件夹的更多相关文章
- 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
		
问题描述: 由于有一次工作原因,就是将某个文件夹下的所有图片,通过CSS描述他们的属性,用的时候就可以直接引用.但是我觉得那个文件夹下的图片太多,而且CSS文件的格式又有一定的规律,所有想通过脚本来生 ...
 - VC 获取指定文件夹路径的方法小结
		
VC获取指定文件夹路径 flyfish 2010-3-5 一 使用Shell函数 1 获取应用程序的安装路径 TCHAR buf[_MAX_PATH];SHGetSpecialFolderPath( ...
 - php获取指定文件夹中文件名称
		
/** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...
 - Python获取指定文件夹下的文件名
		
本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...
 - python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
		
1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...
 - C++获取某个文件夹下的所有文件
		
获取某个文件夹下的所有文件,返回各文件的路径加文件名 path为某文件夹的路径:eg. char * filePath = "C:\\Users\\WUQP\\Desktop\\test_d ...
 - Delphi GetCurrentDir 获取当前文件夹
		
//获取当前文件夹 GetCurrentDirvardir: string;begindir := GetCurrentDir;ShowMessage(dir); //C:\Documents and ...
 - python 获取当前文件夹路径及父级目录的几种方法
		
获取当前文件夹路径及父级目录: import os current_dir = os.path.abspath(os.path.dirname(__file__)) print(current_dir ...
 - bat 获取当前文件夹的文件名
		
bat 获取当前文件夹的文件名 @echo off pushd %1 & for %%i in (.) do set curr=%%~ni echo %curr% pause
 
随机推荐
- OpenStack Weekly Rank 2015.07.27
			
Module Reviews Drafted Blueprints Completed Blueprints Filed Bugs Resolved Bugs Cinder 7 1 1 7 10 Sw ...
 - rails4 ckeditor 的部署以及 中文化
			
首先ckeditor 要基于paperclip 之后paperclip 需要你在linux 下安装 ImageMagick 具体安装可参考http://my.eoe.cn/guanmac/arc ...
 - .vimrc的配置
			
set nocompatible set encoding=utf-8 set fileencodings=utf-8,chinese set tabstop=4 set cindent shiftw ...
 - NodeJS 开发应用
			
NodeJS 开发应用 使用的 Node 版本: V8.11.4 开发工具: VSCode 1.27.1 系统: Deepin 15.7 Desktop x64 项目结构 项目结构 Project i ...
 - postMessage解决跨域跨窗口消息传递
			
平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 页面和其打开的新窗口的数据传递 页面与嵌套的iframe消息传递 这些问题都有一些解决办法,但html5引入的mes ...
 - es6-正则
			
RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new RegExp( ...
 - 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
			
转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...
 - python模块详解 logging
			
打印日志的五个级别: import logging logging.debug('test debug') logging.info('test info') logging.warning('tes ...
 - appium(二)简单的demo
			
转自http://blog.csdn.net/Yejianyun1/article/details/55517418 启动appium服务,连接手机,将测试用例demo存放到.py文件中 # ...
 - 关于VisualStudio2010发布项目问题
			
VisualStudio2010速度还是很给力的,VS2015打开机器就双100%了:VS2010机器上跑起来还是很好用的. 今天编译一个MVC3.0项目,发布时候出现诡异现象:Content文件夹里 ...