如何获取通过环境变量访问的文件的位置。
我希望它类似于Windows命令提示符中的_popen("where python","r");
命令。
我目前正在使用_popen
,但它会暂时打开一个dos窗口。
我已经研究过在没有dos窗口的情况下使用CreateProcess
而且.htaccess
看起来有点过分了。
答案 0 :(得分:4)
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
环境变量中的所有值并尝试每个值。
答案 1 :(得分:-1)
您可以在可执行文件上使用LoadLibrary(),然后使用GetModuleFileName()询问其位置。但这确实有副作用,因为EXE实际上是作为模块加载的。
除此之外,您可以使用search order of CreateProcess自行查找文件。
抱歉,我不认为这些选项中的任何一个特别好,但我找不到其他任何东西。