如何获取通过环境变量访问的文件的位置。
我希望它像Windows命令提示符中的where
命令。
我当前正在使用_popen("where python","r");
,但是它会短暂打开一个dos窗口。
我已经研究了在没有dos窗口的情况下使用_popen
的方法,而CreateProcess
对于这种简单的操作似乎有些过分了。
最佳答案
只要您愿意在文件上加上扩展名,SearchPath
就可以满足要求。如:
WCHAR buffer[MAX_PATH];
DWORD result = SearchPath(NULL, L"python.exe", NULL, MAX_PATH, buffer, NULL);
if (result > 0)
{
std::wcout << buffer << std::endl;
}
如果在文件名上添加扩展名太多,则可以遍历
PATHEXT
环境变量中的所有值,然后尝试每个。