win32 API SearchPath API 无法找到“telnet.exe”二进制路径,即使它存在于 system32 中。
但是,当我搜索 notepad.exe 时,使用相同的代码它会返回文件路径。让我困惑的是,notepad.exe 和 telnet.exe 都位于同一目录中,即 C:\windows\system32。
这是我写的代码
char path[MAX_PATH] = {0};
LPSTR* ptr = NULL;
DWORD dwRet = SearchPathA(NULL, "telnet.exe",
NULL, MAX_PATH, (LPSTR)path, ptr);
这将始终返回 0,并且 GetLastError 为 2(未找到文件)
知道这里发生了什么吗?
我在 x64 计算机上使用 Windows 2008 R2 企业版
感谢和问候 苏尼尔
最佳答案
它不起作用,因为您的应用程序是 32 位并且受到 File System Redirector 的影响。您的应用程序不会在 C:\Windows\System32
中查找,而是被重定向到 C:\Windows\SysWow64
。
notepad.exe
存在于 System32
和 SysWow64
中,但 telnet.exe
只存在于 >System32
。因此,您的应用程序在搜索路径时找不到它。
您可以通过调用 Wow64DisasbleWow64FsRedirection 为您的应用程序禁用此行为。但请注意文档链接中的警告,这些警告表明只能暂时禁用此功能,然后重新启用。
关于windows - win32 API SearchPath 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937701/