用vc提供的adsi接口函数,我是这么写的:(其中变量的声明省略)
//Initialize COM
CoInitialize(NULL);hr = ADsGetObject(L"LDAP://rootDSE",IID_IADs,(void**)&piRootDSE);
if (SUCCEEDED(hr))
{
hr = piRootDSE->Get(L"defaultNamingContext",&varDefaultNamingContext);
piRootDSE->Release();
if (FAILED(hr))
{
return E_FAIL;
}}
debugprint(L"I've been 0");
//Create Group
hr = ADsGetObject( _bstr_t("CN=Users,") + _bstr_t(varDefaultNamingContext),
IID_IADsContainer,
(void**)&piContainer );
if (SUCCEEDED(hr))
{
debugprint(L"I've been 1");
piContainer->Create(L"group",
L"testgroup",&piDispatch);
if (SUCCEEDED(hr))
{
debugprint(L"I've been 2");
hr = piDispatch->QueryInterface(IID_IADsGroup,(void**)piIADs);
if (SUCCEEDED(hr))
{
debugprint(L"I've been 3");
piIADs->Put(L"cn",_variant_t(_bstr_t("testgroup")));
piIADs->Release();
}
piDispatch->Release();
}
piContainer->Release();
}
//Uninitialize COM
CoUnitialize(NULL);
其中debugpinrt函数是我自己用来打印调试信息的,结果发现每次调试信息都只有I've been 0
即ADsGetObject()函数就没有成功,于是我又把ADsGetObject()换成ADsOpenObject(),当然参数也相应做了一些变化,但仍然没有通过,这是什么原因呢(应该不是权限的问题,我已经给相应的程序最大的权限了,而且在之行这部分代码之前,我用类似的方法枚举了Domain下Users容器下的所有组成员,是可行的),现在百思不得其解,而且这是个下周2之前必须完成的任务中的一部分,各位牛人们,给个建议?
//Initialize COM
CoInitialize(NULL);hr = ADsGetObject(L"LDAP://rootDSE",IID_IADs,(void**)&piRootDSE);
if (SUCCEEDED(hr))
{
hr = piRootDSE->Get(L"defaultNamingContext",&varDefaultNamingContext);
piRootDSE->Release();
if (FAILED(hr))
{
return E_FAIL;
}}
debugprint(L"I've been 0");
//Create Group
hr = ADsGetObject( _bstr_t("CN=Users,") + _bstr_t(varDefaultNamingContext),
IID_IADsContainer,
(void**)&piContainer );
if (SUCCEEDED(hr))
{
debugprint(L"I've been 1");
piContainer->Create(L"group",
L"testgroup",&piDispatch);
if (SUCCEEDED(hr))
{
debugprint(L"I've been 2");
hr = piDispatch->QueryInterface(IID_IADsGroup,(void**)piIADs);
if (SUCCEEDED(hr))
{
debugprint(L"I've been 3");
piIADs->Put(L"cn",_variant_t(_bstr_t("testgroup")));
piIADs->Release();
}
piDispatch->Release();
}
piContainer->Release();
}
//Uninitialize COM
CoUnitialize(NULL);
其中debugpinrt函数是我自己用来打印调试信息的,结果发现每次调试信息都只有I've been 0
即ADsGetObject()函数就没有成功,于是我又把ADsGetObject()换成ADsOpenObject(),当然参数也相应做了一些变化,但仍然没有通过,这是什么原因呢(应该不是权限的问题,我已经给相应的程序最大的权限了,而且在之行这部分代码之前,我用类似的方法枚举了Domain下Users容器下的所有组成员,是可行的),现在百思不得其解,而且这是个下周2之前必须完成的任务中的一部分,各位牛人们,给个建议?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货