2013-07-09 2 views
-1

Я разрабатываю приложение для Windows, написанное на C++, которому необходимо восстановить списки файлов удаленной учетной записи Windows с помощью имени пользователя & passwd like:Как получить список файлов папки общего доступа на удаленном сервере Windows на платформе Windows

BOOL GetFilesFromServerShareFolder(const CString& serversharefolderpath, 
            const CString& username, 
            const CString& passwd, 
            CList<CString>& retfiles); 

Я не знаю, как его реализовать. Если кто-нибудь знает некоторые API или пример кода или учебника, это будет действительно полезно.

+0

вы могли бы посмотреть на win32 API для управления сетью акций http://msdn.microsoft.com/en-us/library/windows/desktop/bb525393(v=vs.85).aspx – alexbuisson

ответ

0

Вы можете использовать функцию WNetAddConnection2 для подключения к общей папке.

NETRESOURCE nr = {0}; 
nr.dwType = RESOURCETYPE_DISK; 
nr.lpRemoteName = serversharefolderpath; 
DWORD ret = WNetAddConnection2(&nr, passwd, username, CONNECT_TEMPORARY); 

Затем вы должны иметь возможность перечислять файлы в этой папке с помощью обычного API FindFirstFile.

И, наконец, отмените соединение, когда закончите.

WNetCancelConnection2(nr.lpRemoteName, 0, TRUE); 
0

Во-первых, вам нужно будет подключиться к удаленному ресурсу в качестве желаемого пользователя. Вы можете сделать это, используя функцию WNetAddConnection2.

Чтобы вызвать эту функцию, вы заполните структуру NETRESOURCE, которая описывает удаленный ресурс, к которому вы хотите подключиться, а затем передать указатель этой структуре функции вместе с именем пользователя и строками пароля, а некоторые флаги. Для ваших целей вы, вероятно, захотите убедиться и указать флаги CONNECT_TEMPORARY и CONNECT_UPDATE_RECENT.

Затем, как только вы установили соединение с нужной учетной записью пользователя, вы захотите перечислить файлы/папки в этом общем ресурсе. Вы сделали бы это таким же образом с сетевым ресурсом, как и с любой другой локальной папкой. Например, пара функций FindFirstFile и FindNextFile. Для этих функций имеется множество примеров кода, доступных онлайн. Вот как вы заполните свою коллекцию CList.

И, наконец, не забудьте использовать функцию WNetCancelConnection2, которую вы будете использовать, чтобы отключиться от общего сетевого ресурса, как только вы закончите.