关于Windows:如何可靠地在XP和Vista中获取”快速启动”文件夹?

关于Windows:如何可靠地在XP和Vista中获取”快速启动”文件夹?

How do you reliably get the Quick Launch folder in XP and Vista?

我们需要为Vista和XP下的所有和当前用户可靠地获取Quick Launch文件夹。我正在C语言中进行开发,但这可能更像是一个常见的Windows API问题。

作为参考,这是在两个系统下获取Application Data文件夹的代码:我怀疑这只是知道Microsoft使用哪个子文件夹的问题。

在Windows XP中,应用程序数据子文件夹为:

Microsoft \\\\ Internet Explorer \\\\ Quick Launch

在Vista下,看来子文件夹已更改为:

Roaming \\\\ Microsoft \\\\ Internet Explorer \\\\ Quick Launch

,但我想确保

找到确定此位置的正确方法非常重要,因为在进入国际安装目录时,依赖于硬编码的文件夹名称几乎总是会中断。该文件夹在Vista中被命名为"漫游"的事实使我想知道是否有与该文件夹相关的特殊处理(类似于XP下的Local Settings文件夹)。 http:// m sdn.microsoft.com/zh-cn/library/bb762494.aspx表示CSIDL_APPDATA的等效ID为FOLDERID_RoamingAppData,这似乎支持StocksR的断言,即CSIDL_APPDATA确实返回了C:\\\\ Users \\\\ xxxx \\\\ AppData \\\\ roaming ,因此对于CSIDL_APPDATA可以使用相同的相对路径来快速启动(\\\\ Microsoft \\\\ Internet Explorer \\\\ Quick Launch)。

因此,每个MS的以下算法均正确: >

1
2
3
4
5
HRESULT hres;
CString basePath;
hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
basePath.ReleaseBuffer();
CString qlPath = basePath +"\\\\Microsoft\\\\Internet Explorer\\\\Quick Launch";

检查hres以确保成功调用SHGetSpecialFolderPath也将是一个好主意。


在Vista上的AppData指的是C:\\\\\\\\ Users \\\\\\\\\\ xxxx \\\\\\\\ AppData \\\\\\\\\\\\漫游而不是C:\\\\\\\\ Users \\\\\\\\\\ xxxx \\\\\\\\ AppData文件夹

此外,这篇在Microsoft网站上的文章http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept05/hey0901.mspx意味着您只需使用相对于appdata文件夹

的路径


好问题!

无论您做什么,都不要屈从于诱惑来深入研究注册表以查找此信息!

此外,我们必须抵制诱惑,以硬编码某些路径,甚至是部分路径。如果获得特殊的AppData路径,则只需在字符串末尾附加一个字符串,这在非美国安装的软件(文件夹名称被本地化为该语言)下可能会中断。例如。 GetSpecialFolderPath(APP_DATA) +"\\\\Fonts"在非英语版本的Windows上不起作用。

希望有人正确回答了您的问题;我很好奇自己知道!


推荐阅读

    获取linux时间命令行?

    获取linux时间命令行?,时间,系统,信息,命令,工具,工作,代码,数据,服务,环境,L

    linux命令行设置语言?

    linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

    linux使用命令改语言?

    linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚

    c语言写linux命令?

    c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何

    linux获取挂载点命令?

    linux获取挂载点命令?,系统,设备,情况,信息,分区,磁盘,命令,网络,电脑,目录,L

    linux获取ip命令行?

    linux获取ip命令行?,地址,系统,网络,信息,技术,设备,电脑,服务,手机,管理,配

    linux获取地址命令?

    linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,lin

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux获取ip命令行?

    linux获取ip命令行?,地址,系统,网络,信息,技术,设备,电脑,服务,手机,管理,配

    linux获取地址命令?

    linux获取地址命令?,地址,网络,信息,系统,设备,终端,命令,中心,管理,数字,lin

    linux汇编语言命令?

    linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇

    linux命令是什么语言?

    linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,

    linux上获取网管命令?

    linux上获取网管命令?,地址,系统,网络,信息,电脑,服务,网关,状态,名字,中心,l

    linux命令行获取ip?

    linux命令行获取ip?,地址,系统,代码,信息,电脑,服务,状态,密码,命令,网卡,【L

    linux命令获取主机名?

    linux命令获取主机名?,工作,地址,管理,系统,信息,命令,目录,软件,代码,策略,L

    linux改语言命令行?

    linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,lin

    linux命令行c语言?

    linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linu

    c语言在linux命令?

    c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linu

    linux获取网速命令?

    linux获取网速命令?,网络,工具,软件,地址,设备,5G,名称,工作,通讯,分析,linux

    linux编写c语言命令?

    linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在