#include <atlbase.h> #include <activeds.h> #include <stdio.h> #include <windows.h> #include <lm.h> #pragma comment(lib,"ActiveDS") #pragma comment(lib,"adsiid") #ifndef UNICODE #define UNICODE #endif /******************************************************************** created: 2009/04/15 created: 15:4:2009 15:16 filename: E:/test code/ad_test/ad_test.cpp file path: E:/test code/ad_test file base: ad_test file ext: cpp author: happyhell@163.com purpose: 获取AD 当前账号的隶属组织 *********************************************************************/ int wmain(int argc, wchar_t *argv[]) { LPGROUP_USERS_INFO_0 pBuf = NULL; DWORD dwLevel = 0; DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; NET_API_STATUS nStatus; if (argc != 3) { fwprintf(stderr, L"Usage: %s ServerName UserName/n", argv[0]); } // // Call the NetUserGetGroups function, specifying level 0. // nStatus = NetUserGetGroups(argv[1], argv[2], dwLevel, (LPBYTE*)&pBuf, dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries); // // If the call succeeds, // if (nStatus == NERR_Success) { LPGROUP_USERS_INFO_0 pTmpBuf; DWORD i; DWORD dwTotalCount = 0; if ((pTmpBuf = pBuf) != NULL) { fprintf(stderr, "/nGlobal group(s):/n"); // // Loop through the entries; // print the name of the global groups // to which the user belongs. // for (i = 0; i < dwEntriesRead; i++) { if (pTmpBuf == NULL) { fprintf(stderr, "An access violation has occurred/n"); break; } wprintf(L"/t-- %s/n", pTmpBuf->grui0_name); WCHAR cc[512] ; swprintf( (WCHAR *)cc, (L"hell ---- %s/n"), pTmpBuf->grui0_name); OutputDebugStringW(cc); pTmpBuf++; dwTotalCount++; } } // // If all available entries were // not enumerated, print the number actually // enumerated and the total number available. // if (dwEntriesRead < dwTotalEntries) fprintf(stderr, "/nTotal entries: %d", dwTotalEntries); // // Otherwise, just print the total. // printf("/nEntries enumerated: %d/n", dwTotalCount); } else fprintf(stderr, "A system error has occurred: %d/n", nStatus); // // Free the allocated buffer. // if (pBuf != NULL) NetApiBufferFree(pBuf); getchar(); return 0; }