4

現在のワークステーションがActiveDirectoryセットアップのメンバーであるグループを列挙するためのC++コードを考え出そうとしています。必要なことを正確に実行する次のVisualBasicスクリプトを思いつくことができました。

'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();
4

1 に答える 1

0

WinLDAP ライブラリを使用することもできます。AD サーバーの winldap.h でこの LDAP 検索を参照してください。

于 2012-11-12T10:35:38.867 に答える