首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Windows8.1中使用SHBrowseForFolder函数展开快捷方式

无法在Windows8.1中使用SHBrowseForFolder函数展开快捷方式
EN

Stack Overflow用户
提问于 2015-10-08 06:38:54
回答 1查看 130关注 0票数 0

我有2个cpp应用程序P1和P2。P1可以通过两种方式打开。

  1. 通过直接双击或使用命令行
  2. 使用P2的图形用户界面,使用CreateProcess函数实现(https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx,使用默认标志)。

P1有一个文件选择框,它使用SHBrowseForFolder (https://msdn.microsoft.com/en-us/library/windows/desktop/bb762115(v=vs.85).aspx,使用默认标志)实现。

在Windows8.1中,文件选择框显示了“此PC”下拉菜单下的几个快捷方式(桌面、图片、下载等)。

如果我使用方法1打开P1,这些快捷键就会展开。但是,如果我使用方法2,在展开这些快捷方式时,它会在对话框中显示以下错误。

C:\Windows\system32\config\systemprofile\Desktop指的是不可用的位置。它可以在这台计算机上的硬盘上,也可以在网络上。检查以确保磁盘已正确插入,或已连接到Internet或网络,然后再试一次。如果仍然无法找到该信息,则该信息可能已移动到另一个位置。

请帮帮伙计们。在过去的两天里被困在这里面。

编辑:刚刚发现以下内容。进程P2在启动时由系统级进程打开。如果我关闭P2并以用户身份重新打开它,错误就消失了,文件选择可以正常工作。

EN

回答 1

Stack Overflow用户

发布于 2015-10-22 18:05:56

发现了问题。我使用带有默认标志的CreateProcess函数创建进程。其中一个参数是环境块,为此我传递了NULL。因此,新进程将使用父进程环境变量创建。因此,在启动过程中,P2是由系统级进程与系统的环境变量一起创建的。Ans P2将使用相同的环境变量创建P1。因此,当展开快捷方式时,P1将在环境块中查找USERPROFILE变量,这将是systemprofile。当我以用户身份打开P2时,环境变量将被正确设置,快捷方式也会适当地展开。希望这对将来的人有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33008339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档