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

标签 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();

最佳答案

您还可以使用 WinLDAP 库。看这个LDAP Search with winldap.h on AD Server .

关于c++ - 如何将此 LDAP 代码从 VBS 转换为 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13338045/

相关文章:

c++ - 新的 C++/C 语法

C++ Math评估不正确

c++ - 如何重新定义默认工具提示行为?

vbscript - 使用vbscript计算C盘可用空间

vbscript - vbs脚本通过ftp发送文件并检查/删除原始文件

vbscript - 使用 msxml2.ServerXMLHTTP 将订阅 key 作为请求 header 传递 - 经典 ASP/VB

c++ - 为什么 std::weak_ptr 没有 move 构造函数或 move 赋值运算符?

php - C++/MySQL - 通过主机地址访问数据库时为 'Unknown MySQL server host';没有IP

c++ - 如何向 GetFileName 添加扩展名?

winapi - Windows XP WinAPI 对 CheckBox 控件的支持