Есть задача написать программу:получить сабж.
Мечтаю это сделать на C#, но ничего нужного не нагуглил.Единственное что нашел это WMI - кот. не дал результатов.
Написал на С сырой код - но с быстродействием какие-то проблемы.Помогите разобраться почему так медленно, а если кто знает скажите как сделать на Шарпе,заранее спасибо!
ВОт собственно код:
#pragma comment(lib,"Mpr")
#include "stdafx.h"
#include
#include
#include
BOOL listOfUser(LPNETRESOURCE first)
{
DWORD result,resultEnum;
HANDLE hFirst;
DWORD bufferSize = 16384;
DWORD count = -1;
LPNETRESOURCE second;
second = (LPNETRESOURCE)(GlobalAlloc(GPTR,bufferSize));
if ( second == NULL )
return FALSE;
if ( NO_ERROR != (result = WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,0,first,&hFirst)))
return FALSE;
else
{
do
{
ZeroMemory(second,bufferSize);
resultEnum = WNetEnumResource(hFirst,&count,second,&bufferSize);
if ( resultEnum != NO_ERROR)
return FALSE;
else
{
for ( DWORD i = 0; i < count; i++ )
{
if ( (second
.dwUsage & RESOURCEUSAGE_CONTAINER) == RESOURCEUSAGE_CONTAINER )
if(!listOfUser(&second
))
{
MessageBox(0,second
.lpRemoteName,L"",MB_OK);
}
}
}
}
while(result != ERROR_NO_MORE_ITEMS);
}
GlobalFree((HGLOBAL)second);
result = WNetCloseEnum(hFirst);
return TRUE;
}
int _tmain(int argc, _TCHAR* argv[])
{
LPNETRESOURCE lpRun;
DWORD buff = 16384;
lpRun = (LPNETRESOURCE)GlobalAlloc(GPTR, buff);
ZeroMemory(lpRun,buff);
listOfUser(lpRun);
return 0;
}