Возник такой вопрос: как в программе (на c++) реализовать получение списка расшаренных ресурсов определенного компа в локальной сети? Может кто-нибудь помочь советом?
Code: #include "stdafx.h" #pragma comment(lib, "netapi32.lib") #pragma comment(lib, "mpr.lib") #pragma comment(lib, "ws2_32.lib") #define UNICODE #include <windows.h> #include <stdio.h> #include <conio.h> #include <lm.h> void wmain( int argc, TCHAR *lpszArgv[ ]) { PSHARE_INFO_502 BufPtr,p; NET_API_STATUS res; LPTSTR lpszServer = NULL; DWORD er=0,tr=0,resume=0, i; lpszServer = lpszArgv[1]; printf("Share: Local Path: Uses: Descriptor:\n"); printf("---------------------------------------------------------------------\n"); do { res = NetShareEnum (lpszServer, 502, (LPBYTE *) &BufPtr, -1, &er, &tr, &resume); if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA) { p=BufPtr; for(i=1;i<=er;i++) { printf("%-20S%-30S%-8u",p->shi502_netname, p->shi502_path, p->shi502_current_uses); if (IsValidSecurityDescriptor(p->shi502_security_descriptor)) printf("Yes\n"); else printf("No\n"); p++; } NetApiBufferFree(BufPtr); } else printf("Error: %ld\n",res); } while (res==ERROR_MORE_DATA); getch(); return; } это есть в MSDN. Правда в некоторых случаях возвращает error #5 - Access Denied, хотя сеть равноправная, о каком доступе идет речь?
Спасибо большое, Kurz. В мсдн-е видела такой пример, но он не скомпилился(. error C2664: 'NetShareEnum' : cannot convert parameter 1 from 'LPTSTR' to 'LPSTR' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
я передавал параметр сразу из командной строки, ошибки вроде не было. все как в листинге. Функции передается сетевое имя компа, а не адрес. вопрос: как получить сетевое имя компа по его адресу (функция WNetGetUser не возвращает толком ничего, пример из того же msdn'a не работает)
Kurz, а разве функция NetShareEnum в первом парамере не выводит имена всех компов? Только вот как это получить? Может кто знает? У меня ещё вопрос: всё работает - выводится путь расшаренной папки, проверяю на своем компе - локалки нет. Вопрос: Как мне из консольки сделать MFC? Спасибочки)
Code: [B]servername [/B] Pointer to a string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute. -первый параметр, это сетевое имя компа, к которому применяется функция. руками разве что...)
в настройках проекта тип приложения прописать + библиотеки + функции окна и пр., если я правильно понял.