加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – SHGetFolderPath已弃用:检索Windows文件夹路径的替代方法

发布时间:2020-12-16 04:52:01 所属栏目:百科 来源:网络整理
导读:从 Windows Vista开始,不推荐使用SHGetFolderPath()函数: http://msdn.microsoft.com/en-us/library/bb762181%28v=VS.85%29.aspx 在Windows中检索应用程序文件夹路径的另一种方法是什么? SHGetFolderPath(NULL,CSIDL_COMMON_APPDATA,NULL,szPath) 除此之外
从 Windows Vista开始,不推荐使用SHGetFolderPath()函数: http://msdn.microsoft.com/en-us/library/bb762181%28v=VS.85%29.aspx

在Windows中检索应用程序文件夹路径的另一种方法是什么?

SHGetFolderPath(NULL,CSIDL_COMMON_APPDATA,NULL,szPath)

除此之外,为什么在使用此功能时会出现这些错误:

Error   1   error C2065: 'CSIDL_COMMON_APPDATA' : undeclared identifier 

Error   2   error C3861: 'SHGetFolderPath': identifier not found

解决方法

您链接的文档中描述了替代方法.即它是 SHGetKnownFolderPath.

但是,SHGetKnownFolderPath仅适用于Vista或更高版本.因此,如果您使用加载时链接,并运行在XP上调用SHGetKnownFolderPath的程序,那么该程序将无法启动.如果您希望支持XP,这显然是一个问题.

现在,您可以切换到SHGetKnownFolderPath的运行时链接.在调用之前执行版本检查,如果该功能不可用,则返回SHGetFolderPath.

就个人而言,我不会让这种弃意过度担心你. Microsoft以保持向后兼容性而闻名.不要指望SHGetFolderPath会很快消失.您会发现SHGetFolderPath存在于Windows 8中,我希望它仍然存在于当前10年的任何Windows中.我的建议是坚持加载时间链接,只有当你放弃支持XP时才切换到SHGetKnownFolderPath.

您在编辑中询问的另一个问题是如何调用SHGetFolderPath.您需要遵守在您的问题中链接到的MSDN文档主题底部的要求.具体来说,包括Shlobj.h并将Shlobj.lib传递给链接器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读