在我的应用程序中,有一部分需要列出给定路径中的子目录和文件。它适用于本地路径,但在用户进入网络共享路径时行为很奇怪。
如果我提供网络共享路径\\host_name\shared_dir\*
,我的应用程序可以列出\\host_name\shared_dir\
下的所有子目录和文件,但如果用户只提供\\host_name\*
,则FindFirstFile会失败。 ! <但是用户可以在Windows资源管理器中访问\\host_name\
路径,因此没有权限问题! >
这是一个代码片段,展示了我使用FindFirstFile的方式
#include <stdio.h>
#include <Windows.h>
int main()
{
char l_host_name[64] = "\\\\host_name\\*";
WIN32_FIND_DATA search_data = { 0 };
HANDLE search_handle;
BOOL next_ret_val = 1;
search_handle = FindFirstFile(l_host_name, &search_data);
if(INVALID_HANDLE_VALUE != search_handle)
{
printf("Name = %s\n", search_data.cFileName);
do
{
next_ret_val = FindNextFile(search_handle, &search_data);
printf("Name = %s\n", search_data.cFileName);
} while(next_ret_val != 0);
FindClose(search_handle);
}
else
{
printf("failed to get search handle\n");
}
return 0;
}