PDA

Просмотр полной версии : поиск всех компьютеров в сети



vasya-serega
13.02.2006, 15:09
помоги плиз слепому :)
подскажите плиз класс, с помощью которого можно было найти все компьютеры. Желательно C#, то и API функции подойдут тоже. А то что-то у меня проблемы в общении с MSDN :(

Romeo
23.02.2006, 12:45
WNetOpenEnum, WNetEnumResource. Можно, конечно это всё и через Shell сделать. Типа берём IShellFolder десктопа и топаем к сетевому окружению используя метод BindToObject, а потом внутри сетевого окружения делаем EnumObjects. Но зачем использовать кувалду для того, чтобы забить пару гвоздей в подмётки сапогов? :)

_byLY
09.06.2006, 15:38
#ifndef UNICODE
#define UNICODE
#endif
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <Winnetwk.h>

int wmain(int argc, wchar_t *argv[])
{
//WNetOpenEnum
DWORD nStatus,nStatus0,i;
DWORD mydwScope=RESOURCE_CONNECTED;
DWORD mydwType=RESOURCETYPE_ANY;
DWORD mydwUsage =0,mylpBuffersize=16384,mylpcCount =-1;
LPNETRESOURCE mylpNetResource=NULL,mylpBuffer=NULL,mylpBuffer0=N ULL;
HANDLE mylphEnum;
//LPVOID mylpBuffer=NULL;

if (argc > 2)
{ fwprintf(stderr, L"Usage: %s [\\\\ServerName]\n", argv[0]);
exit(1); }
printf("\nInformation: \n");
nStatus=WNetOpenEnum(
RESOURCE_CONTEXT,
//RESOURCE_CONNECTED,
RESOURCETYPE_ANY,
0,
mylpNetResource,
&mylphEnum);
if ((nStatus==NO_ERROR)||(nStatus==ERROR_MORE_DATA))
{
mylpBuffer=(LPNETRESOURCE)GlobalAlloc(GPTR,mylpBuf fersize);
if (mylpBuffersize!=NULL)
{
ZeroMemory(mylpBuffer,mylpBuffersize);
nStatus0=WNetEnumResource(mylphEnum,
&mylpcCount,
(LPVOID)mylpBuffer,
&mylpBuffersize);


mylpBuffer0=mylpBuffer;
if ((nStatus0==NO_ERROR)||(nStatus0==ERROR_NO_MORE_IT EMS))

for(i = 0; i < mylpcCount; i++)
{
wprintf(//L"\lpLocalName - %s\n"
L"\lpRemoteName - %s\n"
//L"\lpProvider - %s\n"
//L"\dwDisplayType - %s\n"
//L"\lpComment - %s\n"
//L"\dwScope - %s\n"
//L"\dwType - %s\n"
//L"\dwUsage - %s\n"
,
//mylpBuffer0->lpLocalName,
mylpBuffer0->lpRemoteName
//mylpBuffer0->lpProvider
//mylpBuffer0->dwDisplayType,
//mylpBuffer0->lpComment,
//mylpBuffer0->dwScope
//mylpBuffer0->dwType
//mylpBuffer0->dwUsage
);
mylpBuffer0++;

}


;
}}
return 0;
}