是否有预先存在的WinAPI来检查某些_app.exe是否可以在提供完整路径的情况下运行,并在任何时候运行它

是否有预先存在的WinAPI来检查某些_app.exe是否可以在提供完整路径的情况下运行,并在任何时候运行它,winapi,Winapi,是否有预先存在的WinAPI来检查某些_app.exe是否可以在提供完整路径的情况下运行,并在任何时候运行它 例如,假设我想运行cmd.exe或git.exe,但我没有提供完整路径。在我运行它之前,我是否可能过早地知道我是否可以在不知道其完整路径的情况下运行它 我想到的一个想法是模仿Windows的操作方式,即检查当前路径,然后遍历%path%变量等等,但是是否有一个Winapi可以达到这个目的呢?@RbMm已经指出了解决方案:使用API 下面是如何使用该API的示例(控制台应用程序),您可以参

是否有预先存在的WinAPI来检查
某些_app.exe
是否可以在提供完整路径的情况下运行,并在任何时候运行它

例如,假设我想运行
cmd.exe
git.exe
,但我没有提供完整路径。在我运行它之前,我是否可能过早地知道我是否可以在不知道其完整路径的情况下运行它


我想到的一个想法是模仿Windows的操作方式,即检查当前路径,然后遍历
%path%
变量等等,但是是否有一个Winapi可以达到这个目的呢?

@RbMm已经指出了解决方案:使用API

下面是如何使用该API的示例(控制台应用程序),您可以参考

#include <windows.h>

#define BUF_SIZE 260

int main()
{
    WCHAR appFullPath[BUF_SIZE];
    DWORD result = SearchPath(NULL, L"git.exe",NULL, BUF_SIZE, appFullPath, NULL);
    if(result == 0)
        wprintf(L"SearchPath call get an error: %d \n", GetLastError());

    wprintf(L"App full path: %s \n", appFullPath);
    getchar();
} 
#包括
#定义BUF_尺寸260
int main()
{
WCHAR appFullPath[BUF_SIZE];
DWORD结果=搜索路径(NULL,L“git.exe”,NULL,BUF_SIZE,appFullPath,NULL);
如果(结果==0)
wprintf(L“SearchPath调用获取错误:%d\n”,GetLastError());
wprintf(L“应用程序完整路径:%s\n”,appFullPath);
getchar();
} 
上述代码的输出:


。当您传递0 in-place lpApplicationName时—正好是
SearchPathW
函数,用于在完整路径的第一个lpCommandLine令牌中扩展名称。因此,
SearchPathW
正是这里的解决方案-这样-使用
SearchPath
您在一个重要细节上做了手脚。“在我运行它之前,我是否可能过早地知道我是否可以运行它”。什么是“它”?不管怎么说,这是一个问题。你想解决什么问题?为什么不听@RbMm?他已经给了你答案。韩,有点傻的问题,但是我该如何编译提供的代码呢?它是用微软C语言编写的吗?@tabdiukov我在Visual Studio 2017中编译了代码。确保在您的开发机器上安装了。