如何用ADSI提供的LDAP provider修改活动目录里用户的名称?
这里的用户名称指的是用户这个object的Distinguished Name.比如:"CN=testUser,CN=Users,DC=TestDomain.DC=com"或者是"TestDomain.com/cn=testUser,cn=Users"就是如何修改TestDomain.com里Users下的testUser?
关于testUser的其他属性大部分我都修改成功了。现在最关键的是如何修改testUser这个名字。谢谢赐教!
这里的用户名称指的是用户这个object的Distinguished Name.比如:"CN=testUser,CN=Users,DC=TestDomain.DC=com"或者是"TestDomain.com/cn=testUser,cn=Users"就是如何修改TestDomain.com里Users下的testUser?
关于testUser的其他属性大部分我都修改成功了。现在最关键的是如何修改testUser这个名字。谢谢赐教!
解决方案 »
- vs2005与VC6.0问题“ 'TCHAR [255]' to 'PCHAR'”?
- CSplitterWnd CreateView问题
- MFC 定义POSITION 出错
- 高分请高手解答,关于用MSCHART的TwipsToChartPart显示曲线信息,网上怎么都没有个完整的解答啊?
- installshild2009
- 子窗口创建的模态窗口如何得到子窗口的指针??????
- 新官上任,给大家问个好。多多支持啊。。。。。。
- 请问:“在存取文件时发生共享违例”是什么意思呀?谢谢
- 我用ADO连.dbf文件出错,请高手指点! 急!
- 请各位看一下我的这段代码应该写在哪?
- 再次请教:什么是“无效的描述符索引”?
- 有什么封装好的类在view中显示图片的吗?
IADs *pAds;
VARIANT var;
HRESULT hr;
LPWSTR path=L"LDAP://CN=testUser,CN=Users,DC=TestDomain,DC=com";
hr = ADsGetObject( path, IID_IADs, (void**) pADs);
//1、 update values in cache
V_BSTR(&var) = SysAllocString(L"New Name");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(L"sn", var );
VariantClear(&var);//2、 Commit changes to the directory store.
hr = pADs->SetInfo();另外,使用NetUserSetInfo函数也可以
hr = pADs->Put(L"sn", var );
替换成
hr = pADs->Put(L"Name", var );
不允许这样操作的。因为这样是修改了RDN。目录服务器不接受这个请求。name,cn,等几个属性不能这样修改的。
User的RDN不过是cn属性的值而已,容器内保证唯一就行,咋不让改呢?
目录服务器不接受这个请求就没办法了,用NetUserSetInfo函数试试吧.Naming Properties
As with other directory objects, a user object has names in the form of cn, name, distinguishedName, and objectGUID properties. Note that a user's relative distinguished name (RDN) is the value of the cn property. These properties can be viewed and managed by the Active Directory™ User and Computers snap-in.IADsUser接口所提供的属性方法中,除put_FullName可以满足修改SAM Name的需求外,
还真没有显式地提出其他命名属性相关的方法.