Страница: 1 |
Вопрос: Как получить список расшарок на удаленном компе? | Добавлено: 22.10.05 15:08 |
Автор вопроса: ![]() |
Сканирую диапозон ip-адресов по 139 порту и нахожу те, которые имеют расшарки. Теперь с каждого компа необходимо получить список его расшарок. Подскажите, плиз, как это сделать? |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 20 Ответов: 285 |
Профиль | Цитата | #1 | Добавлено: 22.10.05 17:58 |
WNET API |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #2 | Добавлено: 22.10.05 20:43 |
А поподробнее можно? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 22.10.05 21:18 |
см. примере на этом сайте есть |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #4 | Добавлено: 22.10.05 21:44 |
не нашел. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 197.895.916.247 Вопросов: 72 Ответов: 540 |
Профиль | Цитата | #5 | Добавлено: 22.10.05 23:13 |
2illuzion:
не нашел.
- криворукий... http://vbnet.ru/samples/download.aspx?id=676 |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #6 | Добавлено: 22.10.05 23:33 |
прежде, чем называть меня криворуким, лучше почитай о чем разговор был. Мне не нужен сканер включенных удаленных компов, мне нужен сканер расшаренных ресурсов на этих удаленных компах. А в том примере, ссылку на который ты дал, рассматривается как раз первое. И никакого упоминания об API там нет. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #7 | Добавлено: 23.10.05 00:00 |
http://vb.hut1.ru/lanviewer.rar |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 23.10.05 14:17 |
От сердца оторвал:
// Определяем, что будем использовать в программе Unicode
#define UNICODE // Обычные хидеры #include <windows.h> #include <stdio.h> // Хидер с NetShareXXX функциями #include <lm.h> // Это нужно для включения линкером либы при компиляции. // Это можно сделать и в настройках проекта, но тогда: // 1) Не будет видно, какая либа нужна // 2) Нельзя будет распространять только код, без файла проекта #pragma comment (lib, "netapi32.lib" ![]() void usage(TCHAR *Exename){ // Рассказываем, как использовать эту программу wprintf(L"Usage: %s <servername>\n", Exename); } void parseshare(TCHAR *Server, TCHAR *ShareName, TCHAR *Comment){ // Покажем, что нашли TCHAR buff[1024]; wsprintf(buff, L"Путь к ресурсу: \\\\%s\\%s\\\n" L"Комментарий: %s\n", Server, ShareName, Comment); // Просто консоль ни в какую не хочет показывать // русские символы в Unicode, потребовалась помощь // отладчика, чтобы это узнать ![]() MessageBox(0, buff, L"Share", MB_ICONASTERISK); } bool enumshare(TCHAR *Server){ // Объявляем указатели на буфер // и на текущий элемент массива структур PSHARE_INFO_1 BufPtr, p; // Сюда будут возвращать успешность своего дела API NET_API_STATUS res; // Здесь хранится имя сервера LPTSTR lpszServer = NULL; // er - число найденных общих ресурсов DWORD er=0, tr=0, resume=0, i; // Вызовем получение списка общих ресурсов res = NetShareEnum((LPSTR)Server, 1, (LPBYTE *)&BufPtr, MAX_PREFERRED_LENGTH, &er, &tr, &resume); // Проверим успешность данного дела if(res == ERROR_SUCCESS){ // Переберем указатели на элементы массива структур p = BufPtr; for(i=1; i<=er; i++){ if(p->shi1_type == STYPE_DISKTREE){ parseshare(Server, (TCHAR *)p->shi1_netname, (TCHAR *)p->shi1_remark); } // Важный момент - указатель инкрементится на размер // структуры, указателем на которую он является, т.е. // указатель теперь указывает на следующий элемент // массива структур p++; } // Освободим буфер, в который сохранялся список NetApiBufferFree(BufPtr); } else{ // Произошла ошибка return false; } return true; } // В unicode-программах стартовой функцией служит wmain() int wmain(int argc, TCHAR *argv[] ![]() // Проверяем наличие аргумента if(argc == 2){ enumshare(argv[1] ![]() } else{ usage(argv[0] ![]() } return 0; } |
Страница: 1 |
|