如何在 VB.NET 中克隆 UserPrincipal 对象
How to clone a UserPrincipal object in VB.NET
我正在尝试从 VB.NET 应用程序在 Active Directory 中创建一个新用户。大多数字段将与已经存在的“模板”用户相同,除了姓名、姓氏、电子邮件、SamAccountName 等。
所以我想复制或克隆此模板用户,为少数字段分配 new/different 值,然后将此新用户保存在 Active Directory 中。我想避免必须手动将不知道有多少属性从我的模板分配给新用户,并且可能会忘记一些东西..
有没有办法做到这一点?我发现了一些关于使用 DirectoryEntry.CopyTo()
的信息,但我只是得到一个“未实现”错误,而且我怀疑这是正确的方向(不确定如何将此 class 与 UserPrincipal
一起使用对象)
我是否应该使用不同于 System.DirectoryServices.AccountManagement.UserPrincipal
的 class 来将我的新用户保存在 AD 中?是我的做法不对吗?
任何帮助将不胜感激:)
如果您查看 source code for DirectoryEntry.CopyTo
,它会调用:
newParent.ContainerObject.CopyHere(Path, newName)
和ContainerObject
is of the type IADsContainer
. If you look at the documentation for IADsContainer.CopyHere
,它说(在备注下):
The providers supplied with ADSI return the E_NOTIMPL error message.
ADSI 是“Active Directory 服务接口”。所以简短的回答是它不适用于 AD 对象。
没有办法如你所愿。您将必须手动分配要复制的每个属性。
我正在尝试从 VB.NET 应用程序在 Active Directory 中创建一个新用户。大多数字段将与已经存在的“模板”用户相同,除了姓名、姓氏、电子邮件、SamAccountName 等。
所以我想复制或克隆此模板用户,为少数字段分配 new/different 值,然后将此新用户保存在 Active Directory 中。我想避免必须手动将不知道有多少属性从我的模板分配给新用户,并且可能会忘记一些东西..
有没有办法做到这一点?我发现了一些关于使用 DirectoryEntry.CopyTo()
的信息,但我只是得到一个“未实现”错误,而且我怀疑这是正确的方向(不确定如何将此 class 与 UserPrincipal
一起使用对象)
我是否应该使用不同于 System.DirectoryServices.AccountManagement.UserPrincipal
的 class 来将我的新用户保存在 AD 中?是我的做法不对吗?
任何帮助将不胜感激:)
如果您查看 source code for DirectoryEntry.CopyTo
,它会调用:
newParent.ContainerObject.CopyHere(Path, newName)
和ContainerObject
is of the type IADsContainer
. If you look at the documentation for IADsContainer.CopyHere
,它说(在备注下):
The providers supplied with ADSI return the E_NOTIMPL error message.
ADSI 是“Active Directory 服务接口”。所以简短的回答是它不适用于 AD 对象。
没有办法如你所愿。您将必须手动分配要复制的每个属性。