Мне нужно получить список расшаренных папок НЕ ВО ВСЕЙ СЕТИ, а по адресу \\comp КАК? Вот этот код, выводящий список всех ресурсов в сети | Код | // Enum_Resources.cpp : Defines the entry point for the console application. //
#include "stdafx.h"
#include <windows.h>
BOOL WINAPI EnumerateFunc( LPNETRESOURCE lpnr) { DWORD dwResult, dwResultEnum; HANDLE hEnum; DWORD cbBuffer = 16384; // 16K is a good size DWORD cEntries = -1; // enumerate all possible entries LPNETRESOURCE lpnrLocal; // pointer to enumerated structures DWORD i;
// // Call the WNetOpenEnum function to begin the enumeration. // dwResult = WNetOpenEnum(RESOURCE_GLOBALNET, // all network resources RESOURCETYPE_ANY, // all resources 0, // enumerate all resources lpnr, // NULL first time the function is called &hEnum); // handle to the resource
if(dwResult != NO_ERROR) { // // Process errors with an application-defined error handler. // // NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetOpenEnum"); return FALSE; }
// // Call the GlobalAlloc function to allocate resources. // lpnrLocal = (LPNETRESOURCE) GlobalAlloc(GPTR, cbBuffer); if(lpnrLocal == NULL) return FALSE; do { // // Initialize the buffer. // ZeroMemory(lpnrLocal, cbBuffer); // // Call the WNetEnumResource function to continue // the enumeration. // dwResultEnum = WNetEnumResource(hEnum, // resource handle &cEntries, // defined locally as -1 lpnrLocal, // LPNETRESOURCE &cbBuffer); // buffer size // // If the call succeeds, loop through the structures. // if (dwResultEnum == NO_ERROR) { for(i = 0; i < cEntries; i++) { // Call an application-defined function to // display the contents of the NETRESOURCE structures. // printf( "%s %s\n", lpnrLocal[i].lpLocalName, lpnrLocal[i].lpRemoteName );
// If the NETRESOURCE structure represents a container resource, // call the EnumerateFunc function recursively.
if(RESOURCEUSAGE_CONTAINER == (lpnrLocal[i].dwUsage & RESOURCEUSAGE_CONTAINER)) if(!EnumerateFunc(&lpnrLocal[i])) printf( "\nEnumerateFunc returned FALSE.\n" ); } } // Process errors. // else if (dwResultEnum != ERROR_NO_MORE_ITEMS) { // NetErrorHandler(hwnd, dwResultEnum, (LPSTR)"WNetEnumResource"); break; } } // // End do. // while(dwResultEnum != ERROR_NO_MORE_ITEMS); // // Call the GlobalFree function to free the memory. // GlobalFree((HGLOBAL)lpnrLocal); // // Call WNetCloseEnum to end the enumeration. // dwResult = WNetCloseEnum(hEnum); if(dwResult != NO_ERROR) { // // Process errors. // // NetErrorHandler(hwnd, dwResult, (LPSTR)"WNetCloseEnum"); return FALSE; }
return TRUE; }
int main() { NETRESOURCE nr;
nr.dwScope = RESOURCE_GLOBALNET; nr.dwType = RESOURCETYPE_DISK; nr.dwUsage = RESOURCEUSAGE_CONTAINER; nr.lpLocalName = TEXT(""); nr.lpRemoteName = TEXT(""); nr.lpComment = TEXT(""); nr.lpProvider = TEXT("");
EnumerateFunc (&nr);
return 0; }
|
мне приводить не надо, сыт уж по горло...
|