GetShortPathName当处理的路径包含系统环境变量时提示找不到该文件

ak200111 2013-09-13 04:16:56
使用com接口分析文件路径,当tszOriginPath路径为%windir%\system32\notepad.exe之类的包含系统环境变量时,使用GetShortPathName(tszOriginPath, tszOriginPathShort, MAX_PATH)就不能得到短路径了,请问有没有什么办法解决
难道需要人工先分析下原始路径,将系统环境变量替换掉?如果要做,不知有没有高手支支招
...全文
94 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ak200111 2013-09-13
  • 打赏
  • 举报
回复
引用 3 楼 sololie 的回复:
俺的是cb6,还是最好明确ExpandEnvironmentStringsA char* tszOriginPath = "%windir%\\system32\\notepad.exe"; char buf[MAX_PATH] = {'/0'}; ExpandEnvironmentStringsA(tszOriginPath, buf, MAX_PATH);
真是感谢啊,我已经改好了,我用的GetArguments(tszOriginArgus, MAX_PATH),所以使用ExpandEnvironmentStrings,将buf定义为tchar就ok啦,已经调试通过了,再次感谢大牛的指导
sololie 2013-09-13
  • 打赏
  • 举报
回复
俺的是cb6,还是最好明确ExpandEnvironmentStringsA char* tszOriginPath = "%windir%\\system32\\notepad.exe"; char buf[MAX_PATH] = {'/0'}; ExpandEnvironmentStringsA(tszOriginPath, buf, MAX_PATH);
sololie 2013-09-13
  • 打赏
  • 举报
回复
char* tszOriginPath = "%windir%\\system32\\notepad.exe"; char buf[MAX_PATH]; ExpandEnvironmentStrings(tszOriginPath, buf, MAX_PATH); 这样buf就是 "C:\WINDOWS\system32\notepad.exe"
sololie 2013-09-13
  • 打赏
  • 举报
回复
用ExpandEnvironmentStrings\GetEnvironmentVariable 把%windir%转换一下先嘛

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧