如果FindXxxFile API无法枚举它们,我如何枚举主机上的共享?

时间:2011-06-08 04:38:08

标签: c windows winapi visual-c++

在我的应用程序中,有一部分需要列出给定路径中的子目录和文件。它适用于本地路径,但在用户进入网络共享路径时行为很奇怪。

如果我提供网络共享路径\\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; 
}

0 个答案:

没有答案