GetFullPathNameA 返回项目的路径(WinAPI C)[已解决]
Posted
技术标签:
【中文标题】GetFullPathNameA 返回项目的路径(WinAPI C)[已解决]【英文标题】:GetFullPathNameA Returns Project's Path (WinAPI C) [SOLVED] 【发布时间】:2020-04-11 17:56:40 【问题描述】:当我尝试以下代码时:
char pathStr[MAX_PATH];
DWORD pathLen = GetFullPathNameA("notepad++.exe", MAX_PATH, pathStr, NULL);
我在“pathStr”中输入了当前目录的路径,其末尾带有“notepad++.exe”,而不是文件的真实路径...我在这里遗漏了什么吗?
【问题讨论】:
GetFullPathName
将当前驱动器和目录的名称与指定的文件名合并
我想你要找的函数是SearchPathW
。
哦,好吧...那么还有另一种方法可以找到特定文件的路径吗?哈哈,我觉得自己像个白痴
谢谢!:) @ErykSun
如果在PATH
目录下没有找到该文件,您也可以尝试AssocQueryStringW
(ASSOCF_INIT_BYEXENAME
) 并尝试在“[HKCU|]下枚举用户和系统App Paths HKLM]\Software\Microsoft\Windows\CurrentVersion\App 路径”。
【参考方案1】:
您误解了该函数的用途。该函数的 Microsoft 文档 (https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfullpathnamea) 指出:
GetFullPathName 将当前驱动器名和目录名与指定文件名合并,确定指定文件的完整路径和文件名。
您可以尝试使用 SearchPath 函数 (https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-searchpatha) 尝试仅根据文件名在当前搜索路径中查找可执行文件。
【讨论】:
谢谢,我试试看:)以上是关于GetFullPathNameA 返回项目的路径(WinAPI C)[已解决]的主要内容,如果未能解决你的问题,请参考以下文章