使用C ++中的ADSI搜索林中的所有域

时间:2016-07-21 22:46:10

标签: c++ adsi

所以我需要找到主机当前所在的林中的所有域。

根据我读过的所有要求" namingContexts "打开后打开 GC:// RootDSE 应该给我这个,但是,我只看到了林根的命名上下文。我检查了所有的硬件,所有的DC都启动并运行,GC很好。我知道数据存在,因为Get-ADForest显示了我正在寻找的域名。我错过了什么?

以下是代码:

HRESULT hr;
IADs* pGCContainer = NULL;
VARIANT varContainerRetVal;
std::vector<std::string> vecUPNSuffixes;
BSTR path = NULL;

// Initialize COM.

hr = CoInitialize(NULL);
if(FAILED(hr)){
    LogInfo("CoInitialize failed hr = %08x",hr);
}

VariantInit(&varContainerRetVal);

// look for all other Domains in the forest
hr = getGCRootDSEContainerObject(&pGCContainer); // this does an ADsGetObject("GC://RootDSE",IID_IADS,(void**)pGCContainer);
if (SUCCEEDED(hr) && pGCContainer)
{
    // get NamingContext
    hr = pGCContainer->Get(_bstr_t(LDAP_OBJ_NAMEING_CTX.c_str()),&varContainerRetVal);
    vecForestDomains = getVariantArrayContentsAsVector(varContainerRetVal); // as the name implies this moves a Variant Array into an std::vector<std::string>
    VariantInit(&varContainerRetVal);
};

这在一定程度上起作用,因为我得到5个条目,但仅从根域,没有列出其他域。而真正奇怪的部分是我看到它实际上在一天前工作。

这就是我现在所得到的:

+       [0] "DC=boston,DC=com"  
+       [1] "CN=Configuration,DC=boston,DC=com" 
+       [2] "CN=Schema,CN=Configuration,DC=boston,DC=com"   
+       [3] "DC=DomainDnsZones,DC=boston,DC=com"    
+       [4] "DC=ForestDnsZones,DC=boston,DC=com"    

这就是我昨天看到的,没有代码之间的变化

+       [0] "DC=boston,DC=com"  
+       [1] "DC=southend,DC=boston,DC=com
+       [2] "CN=Configuration,DC=boston,DC=com" 
+       [3] "CN=Schema,CN=Configuration,DC=boston,DC=com"   
+       [4] "DC=DomainDnsZones,DC=southend,DC=boston,DC=com"    
+       [5] "DC=ForestDnsZones,DC=boston,DC=com"    

0 个答案:

没有答案