1

部門や役職などのフィールドを追加しようとして、かなりの時間を費やしています。

これを使用してユーザーアカウントを作成しています:

Dim ctx As New PrincipalContext(ContextType.Domain, "domain.name.pvt",  "OU=Users,DC=global,DC=pvt")

Dim usr As UserPrincipal = New UserPrincipal(ctx) 

アカウントの作成に問題はありませんが、 や などの単純なものを追加できませDepartmentTitle。拡張機能の使用について読みましたが、それは C++ であり、その方法についての手がかりがありません。

どんな助けでも素晴らしいでしょう!!! ありがとう!

4

1 に答える 1

1

.NET 3.5 以降を使用している場合は、System.DirectoryServices.AccountManagement(S.DS.AM) 名前空間を確認してください。ここでそれについてすべて読んでください:

クラスを拡張するUserPrincipalのに多くは必要ありません - このようなもので十分です (私はもともと C# でこれを書き、ネット上で VB.NET に変換しただけです - VB.NET コードに問題がないことを願っています! )

Imports System.DirectoryServices.AccountManagement

Namespace ADExtended
    <DirectoryRdnPrefix("CN")> _
    <DirectoryObjectClass("Person")> _
    Public Class UserPrincipalEx
        Inherits UserPrincipal
        ' Inplement the constructor using the base class constructor. 
        Public Sub New(context As PrincipalContext)
            MyBase.New(context)
        End Sub

        ' Implement the constructor with initialization parameters.    
        Public Sub New(context As PrincipalContext, samAccountName As String, password As String, enabled As Boolean)
            MyBase.New(context, samAccountName, password, enabled)
        End Sub

        ' Create the "Department" property.    
        <DirectoryProperty("department")> _
        Public Property Department() As String
            Get
                If ExtensionGet("department").Length <> 1 Then
                    Return String.Empty
                End If

                Return DirectCast(ExtensionGet("department")(0), String)
            End Get
            Set
                ExtensionSet("department", value)
            End Set
        End Property

        ' Create the "Title" property.    
        <DirectoryProperty("title")> _
        Public Property Title() As String
            Get
                If ExtensionGet("title").Length <> 1 Then
                    Return String.Empty
                End If

                Return DirectCast(ExtensionGet("title")(0), String)
            End Get
            Set
                ExtensionSet("title", value)
            End Set
        End Property

        ' Implement the overloaded search method FindByIdentity.
        Public Shared Shadows Function FindByIdentity(context As PrincipalContext, identityValue As String) As UserPrincipalEx
            Return DirectCast(FindByIdentityWithType(context, GetType(UserPrincipalEx), identityValue), UserPrincipalEx)
        End Function

        ' Implement the overloaded search method FindByIdentity. 
        Public Shared Shadows Function FindByIdentity(context As PrincipalContext, identityType As IdentityType, identityValue As String) As UserPrincipalEx
            Return DirectCast(FindByIdentityWithType(context, GetType(UserPrincipalEx), identityType, identityValue), UserPrincipalEx)
        End Function
    End Class
End Namespace

今、あなたはUserPrincipalExクラスを使うだけです:

Dim ctx As New PrincipalContext(ContextType.Domain, "domain.name.pvt",  "OU=Users,DC=global,DC=pvt")

Dim usr As UserPrincipalEx = New UserPrincipalEx(ctx) 
usr.Title = "......."
usr.Department = "......."

新しい S.DS.AM を使用すると、AD でユーザーやグループを簡単に操作できます。

于 2013-02-21T21:27:52.733 に答える