未指定路径时,CreateProcess与ShellExecute(Ex) 查找路径之不同
几天前碰上的一个比较细节的东西。调用CreateProcess时不指定全路径时(如:devenv.exe)就不成功(返回0),而同样是不带路径,开始-》运行(与ShellExecute 相当?我想)则完全OK,可以正常开户vs的开发环境。最后原因是——没有把devenv.exe所在的路径加入环境变量PATH里。这倒打破了我一直以来的一个错误认识,即开始-》运行OK的话就说明环境变量设定也是OK的。
查查CreateProcess相关的MSDN。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx

当不指定全路径调用CreateProcess启动devenv.exe失败,而使用ShellExecute(Ex)则成功。原因在于CreateProcess的搜索顺序不同于ShellExecute(Ex),后者会检查App Paths注册表项。CreateProcess会查找加载应用的目录、父进程当前目录、系统目录等,而ShellExecute(Ex)推荐使用App Paths注册键。
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



