Windows SearchPath功能

时间:2009-07-02 23:52:50

标签: c++ winapi search file-management

我使用以下内容搜索定义为宏DB_CONFIG_FILE_PATH_1的文件。

wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);

如果文件位于C:\目录中,则找到该文件。但是,如果文件位于其子目录之一,则该函数找不到它。

有些人可以解释如何搜索所有驱动器,包括具有上述功能的文件的子目录。

我没有使用FindFirstFile函数,因为即使函数返回文件的句柄,我也无法检索文件的路径。

要说它,我想要一个文件的完整路径名。我知道文件的名称,但不知道它在comp上的位置。

2 个答案:

答案 0 :(得分:1)

要在Win32上搜索本机代码中的子目录,您需要自己使用FindFirstFile,然后再递归到子目录。

FindFirstFile的返回值不是文件句柄 - 文件信息包含在返回的WIN32_FIND_DATA结构中。句柄用于调用FindNextFile以继续搜索。要在搜索过程中获取完整路径名,您需要跟踪当前所在的目录,并将发现的目录名称附加到路径中。

SearchPath仅搜索PATH环境变量或第一个参数(如果存在),不搜索子目录。

答案 1 :(得分:0)

GetCurrentDirectory()应该告诉你路径:

http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx

FindFirstFile()的第二个参数:

http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx

这是一个WIN32_FIND_DATA结构应该告诉你文件的名称:

http://msdn.microsoft.com/en-us/library/aa365740(VS.85).aspx