获取AD域下的所有用户

#include "stdafx.h"
#include <activeds.h>
#include <adsiid.h>
#include <stdio.h>
#include <atlbase.h>
 
#pragma comment(lib, "Activeds.lib")
#pragma comment(lib, "adsiid.lib")
void main()
{
    HRESULT hr;
    IDirectorySearch *pSearch;
     
    // Inititalization
     
    CoInitialize(NULL);
     
     
    // Bind to the base search object
    //此函数也可以验证用户和用户名是否合法
    hr = ADsOpenObject(CComBSTR("LDAP://192.168.1.191"),  //地址
        CComBSTR("administrator"),  //用户
        CComBSTR("Admin123"),  //密码
        ADS_SECURE_AUTHENTICATION,
        IID_IDirectorySearch,
        (void**)&pSearch);
     
     
    ADS_SEARCHPREF_INFO prefInfo[1];
    prefInfo[0].dwSearchPref = ADS_SEARCHPREF_SEARCH_SCOPE;
    prefInfo[0].vValue.dwType = ADSTYPE_INTEGER;
    prefInfo[0].vValue.Integer = 100;
    hr = pSearch->SetSearchPreference( prefInfo, 1);
    if (FAILED(hr))
    {
        pSearch->Release();
        //return hr;
    }
    // Prepare for attributes to be returned
     
    LPWSTR pszSearchFilter = L"(&(objectClass=user)(objectCategory=person))";
    //LPWSTR pszAttr[] = {L"sAMAccountName"};
    LPWSTR pszAttr[] = {L"name"};
    ADS_SEARCH_HANDLE hSearch;
 
    LPOLESTR pszColumn = NULL;
    int iCount = 0;
    DWORD x = 0;
 
    DWORD dwCount= sizeof(pszAttr)/sizeof(LPWSTR);
     
    // Search
    hr = pSearch->ExecuteSearch(
        pszSearchFilter,
        pszAttr,
        dwCount,
        &hSearch
        );
    // Enumerate the search result
     
    ADS_SEARCH_COLUMN col;
 
    if ( SUCCEEDED(hr) )
    {    
        // Call IDirectorySearch::GetNextRow() to retrieve the next row of data
        hr = pSearch->GetFirstRow(hSearch);
        if (SUCCEEDED(hr))
        {
            while( hr != S_ADS_NOMORE_ROWS )
            {
                //Keep track of count.
                iCount++;
                // loop through the array of passed column names,
                // print the data for each column
                 
                while( pSearch->GetNextColumnName( hSearch, &pszColumn ) != S_ADS_NOMORE_COLUMNS )
                {
                    hr = pSearch->GetColumn( hSearch, pszColumn, &col );
                    if ( SUCCEEDED(hr) )
                    {
                        for (x = 0; x< col.dwNumValues; x++)
                            wprintf(L"%s: %s  ",col.pszAttrName,col.pADsValues[x].CaseIgnoreString);
                    }
                     
                    pSearch->FreeColumn( &col );
                }
                FreeADsMem( pszColumn );
                //Get the next row
                hr = pSearch->GetNextRow( hSearch);
                wprintf(L"\n");
            }
        }
    }
     
    CoUninitialize();
     
    //return S_OK;
}

ADBulkAdmin工具用于批量管理AD帐户,可批量查看用户属性,批量新建用户和设置用户属性等,可以连接指定的控,可将所有操作日志保存到Access数据库中。 详细信息请到http://www.usefulshare.com/adbulkadmin 查看。 软件运行要求: 1. 需要安装.NetFramework 4.0以上版本。 2. 需要安装Office 2007以上版本软件。 可进行如下批量操作: 1. 批量查看帐户信息:Check User。可按用户名,显示名称,邮箱地址,UPN等查询常用属性信息,如DisplayName, Name, SamAccountName, EmailAddress, LyncAddress, Company, Department, DN等。 2. 批量新建帐户:New User。 3. 批量重置密码:Reset Password。 4. 批量启用/禁用帐户:Xable User。 5. 批量删除帐户:Remove User。 6. 批量设置帐户属性:Set Properties。 7. 批量查询组信息:Check Group。 8. 批量添加帐户到组:Add to Group。 9. 批量从组中删除帐户:Remove from Group。 10. 可以连接指定控,而无论本机是否加入。 11. 可以导出结果数据。 12. 从OU中获得用户,从组中获得成员,显示所有禁用或锁定用户,按密码过期时间获得用户等。 13. 可测试用户是否使用简单密码。 14. 查看用户在所有控上的锁定状态。 如果您使用的是32位Office,请运行ADBulkAdmin-v1.1.0.11 for 32bit Office中的程序;如果您使用的是64位Office,请运行ADBulkAdmin-v1.1.0.11 for 64bit Office中的程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值