Experts !Problem with WNetOpenEnum
-
I am trying to get the list of domains AND LIST OF COMPUTERS under each domain. I am getting domains when I use the parameter RESOURCE_GLOBALNET in WNetOpenEnum. I am getting list of only computers when I use the parameter RESOURCE_CONTEXT in WNetOpenEnum. But my requirement is I would like to get computers under each domain. How should I achive this .This is the code.Pls tell me where I am going wrong. NETRESOURCE res[10]; HANDLE hMain; int x,y,i; DWORD dwCnt = 0xffffffff; DWORD dwSize; DWORD dwRes; dwRes = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hMain); dwSize = sizeof (res); if (WNetEnumResource (hMain, &dwCnt, res, &dwSize) == NO_ERROR) { HANDLE hEnum; dwRes = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, res,&hEnum); while (dwRes == NO_ERROR || dwRes == ERROR_MORE_DATA) { dwCnt = 9; dwSize = sizeof (NETRESOURCE) * 10; dwRes = WNetEnumResource (hEnum, &dwCnt, res, &dwSize); if (dwRes != ERROR_NO_MORE_ITEMS) { for ( i = 0; i < dwCnt; i++) { if (res[i].lpLocalName != NULL || res[i].lpRemoteName!= NULL) { //MessageBox(0,res[i].lpLocalName,res[i].lpRemoteName,0); //Add this in to a list box. SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM)res[i].lpRemoteName) ; } } } WNetCloseEnum (hEnum); } WNetCloseEnum (hMain); Pls guide
-
I am trying to get the list of domains AND LIST OF COMPUTERS under each domain. I am getting domains when I use the parameter RESOURCE_GLOBALNET in WNetOpenEnum. I am getting list of only computers when I use the parameter RESOURCE_CONTEXT in WNetOpenEnum. But my requirement is I would like to get computers under each domain. How should I achive this .This is the code.Pls tell me where I am going wrong. NETRESOURCE res[10]; HANDLE hMain; int x,y,i; DWORD dwCnt = 0xffffffff; DWORD dwSize; DWORD dwRes; dwRes = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, NULL, &hMain); dwSize = sizeof (res); if (WNetEnumResource (hMain, &dwCnt, res, &dwSize) == NO_ERROR) { HANDLE hEnum; dwRes = WNetOpenEnum (RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, res,&hEnum); while (dwRes == NO_ERROR || dwRes == ERROR_MORE_DATA) { dwCnt = 9; dwSize = sizeof (NETRESOURCE) * 10; dwRes = WNetEnumResource (hEnum, &dwCnt, res, &dwSize); if (dwRes != ERROR_NO_MORE_ITEMS) { for ( i = 0; i < dwCnt; i++) { if (res[i].lpLocalName != NULL || res[i].lpRemoteName!= NULL) { //MessageBox(0,res[i].lpLocalName,res[i].lpRemoteName,0); //Add this in to a list box. SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM)res[i].lpRemoteName) ; } } } WNetCloseEnum (hEnum); } WNetCloseEnum (hMain); Pls guide
This works fine for me:
bool GetResources( NETRESOURCE *pNetResource )
{
DWORD dwResult;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;dwResult = WNetOpenEnum(RESOURCE\_GLOBALNET, RESOURCETYPE\_ANY, 0, pNetResource, &hEnum); if (NO\_ERROR == dwResult) { NETRESOURCE Buffer\[750\]; DWORD Count = 0xFFFFFFFF, BufferSize; BufferSize = sizeof(Buffer); do { dwResult = WNetEnumResource(hEnum, &Count, &Buffer, &BufferSize); if (NO\_ERROR == dwResult || ERROR\_MORE\_DATA == dwResult) { for (UINT i = 0; i < Count; i++) { if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_DOMAIN) cout << "Domain "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_SERVER) cout << "Server "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_SHARE) cout << "Share "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_GROUP) cout << "Group "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_NETWORK) cout << "Network "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_ROOT) cout << "Root "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_SHAREADMIN) cout << "ShareAdmin "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_TREE) cout << "Tree "; else if (Buffer\[i\].dwDisplayType == RESOURCEDISPLAYTYPE\_NDSCONTAINER) cout << "NDS "; else cout << "Unknown "; cout << Buffer\[i\].lpRemoteName << endl; if ((Buffer\[i\].dwUsage & RESOURCEUSAGE\_CONTAINER) == RESOURCEUSAGE\_CONTAINER) GetResources(&Buffer\[i\]); } } } while (NO\_ERROR == dwResult || ERROR\_MORE\_DATA == dwResult); dwResult = WNetCloseEnum(hEnum); } return true;
}
"When I was born I was so surprised that I didn't talk for a year and a half." - Gracie Allen