所以我需要找到主机当前所在的林中的所有域。
根据我读过的所有要求" 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"