如何将此LDAP代码从VBS转换为C ++

时间:2012-11-12 03:32:39

标签: c++ winapi vbscript active-directory ldap

我正在尝试使用C ++代码来枚举当前工作站是Active Directory设置中的成员的组。我能够提出以下完全符合我需要的Visual Basic脚本:

'DN for the workstation
cCN = "CN=WorkstationName,CN=Computers,DC=mydomain,DC=local"
Set objComputer=GetObject("LDAP://" & cCN)

Dim strAll
Dim colGroups, objGroup

strAll = ""
Set colGroups = objComputer.Groups
For Each objGroup In colGroups
    strAll = strAll & objGroup.distinguishedName & vbLf
Next

Wscript.Echo strAll

我收到的输出如下:

CN=Group1,OU=SomeOU,DC=mydomain,DC=local
CN=Group2,OU=SomeOU,DC=mydomain,DC=local

问题是我似乎无法将LDAP内容转换为C ++。

如果有人可以帮助我,我真的很感激吗?

编辑: 以下内容可以从我的C ++知识和COM中收集到:

// Initialize COM.
CoInitialize(NULL);

LPCTSTR pwszContainerDN = L"CN=WorkstationName,CN=Computers,DC=mydomain,DC=local";

CComBSTR strADsPath = L"LDAP://";
strADsPath += pwszContainerDN;

IADs *objComputer;
HRESULT hr;

hr = ADsGetObject(strADsPath,
    IID_IADs,
    (void**) &objComputer);

if(SUCCEEDED(hr))
{
    //Now how do you do "objComputer.Groups"?
    //Then later "For Each" enumeration, etc.?
}

// Uninitialize COM.
CoUninitialize();

2 个答案:

答案 0 :(得分:0)

此Microsoft链接向您显示所需的一切Example Code for Enumerating Local Groups

答案 1 :(得分:0)

您也可以使用WinLDAP库。请参阅此LDAP Search with winldap.h on AD Server