gpt4 book ai didi

windows - 如何在 XP 和 Vista 中可靠地获取 Quick Launch 文件夹?

转载 作者:可可西里 更新时间:2023-11-01 11:41:43 25 4
gpt4 key购买 nike

我们需要为 Vista 和 XP 下的所有用户和当前用户可靠地获取快速启动文件夹。我正在使用 C++ 进行开发,但这可能更像是一个一般的 Windows API 问题。

作为引用,这里是获取两个系统下的Application Data文件夹的代码:

    HRESULT hres; 
CString basePath;
hres = SHGetSpecialFolderPath(this->GetSafeHwnd(), basePath.GetBuffer(MAX_PATH), CSIDL_APPDATA, FALSE);
basePath.ReleaseBuffer();

我怀疑这只是了解 Microsoft 使用哪个子文件夹的问题。

在 Windows XP 下,应用程序数据子文件夹是:

Microsoft\Internet Explorer\快速启动

在 Vista 下,子文件夹似乎已更改为:

漫游\Microsoft\Internet Explorer\快速启动

但我想确保这是确定正确位置的正确方法。

找到确定此位置的正确方法非常重要,因为依赖硬编码的文件夹名称几乎总是会在您进入国际安装等时中断......文件夹被命名的事实Vista 中的“漫游”让我想知道是否有一些与该文件夹相关的特殊处理(类似于 XP 下的 Local Settings 文件夹)。

编辑:以下 msdn 文章:http://msdn.microsoft.com/en-us/library/bb762494.aspx表示 CSIDL_APPDATA 具有 FOLDERID_RoamingAppData 的等效 ID,这似乎确实支持 StocksR 的断言,即 CSIDL_APPDATA 确实返回 C:\Users\xxxx\AppData\Roaming,因此应该可以为 CSIDL_APPDATA 使用相同的相对路径来快速启动(\Microsoft\Internet Explorer\快速启动)。

因此对于每个 MS,以下算法是正确的:

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\Roaming 而不是 C:\Users\xxxx\AppData 文件夹本身。

还有这篇文章http://www.microsoft.com/technet/scriptcenter/resources/qanda/sept05/hey0901.mspx在微软站点上意味着您只需使用相对于 appdata 文件夹的路径

关于windows - 如何在 XP 和 Vista 中可靠地获取 Quick Launch 文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com