Active Directory Attribut ansprechen

  • Hallo zusammen,

    ich versuche verzweifelt ein ADS Attribut auszulesen, das funktioniert eigentlich mit jedem anderen Attribut ausser mit einem "securecomputingCom2000-SafeWord-UserID" das Minuszeichen "-" enthält. Nach dem ersten Minuszeichen wird offenbar das Attribut nicht mehr "erkannt" und auch anders dargestellt. Als Sring habe ich auch schon mal deklariert, leider ohne Erfolg.

    [autoit]


    #include <GUIConstants.au3>
    #include <Misc.au3>
    Const $ADS_NAME_INITTYPE_GC = 3
    Const $ADS_NAME_TYPE_NT4 = 3
    Const $ADS_NAME_TYPE_1779 = 1
    Dim $cmd2, $cmd3, $txt2, $txt3

    [/autoit][autoit][/autoit][autoit]

    $frm1 = GUICreate("SafeWordToken Changer", 421, 160, 512, 317)
    $filemenu = GuiCtrlCreateMenu ("Datei")
    $exititem = GuiCtrlCreateMenuitem ("Beenden",$filemenu)
    $helpmenu = GuiCtrlCreateMenu ("?")
    $aboutitem = GuiCtrlCreateMenuitem ("Über",$helpmenu)
    $txt1 = GUICtrlCreateInput("", 144, 24, 161, 21)
    $lbl1 = GUICtrlCreateLabel("Login Name:", 24, 24, 91, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $cmd1 = GUICtrlCreateButton("Suchen", 312, 24, 73, 25, 0)
    $cmd2 = GUICtrlCreateButton("Ändern", 312, 64, 75, 25, 0)
    GUICtrlSetState(-1,$GUI_Hide)
    $lbl4 = GUICtrlCreateLabel("©2008 Werner Heuschreiber", 264, 120, 141, 17)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    Case $msg = $cmd1

    [/autoit][autoit][/autoit][autoit]

    $oMyError = ObjEvent("AutoIt.Error", "ComError")
    $objRootDSE = ObjGet("LDAP://RootDSE")
    $username = GUICtrlRead($txt1)

    [/autoit][autoit][/autoit][autoit]

    If @error Then
    MsgBox(0, 'Fehler', 'Username: ' & $username & ' existiert nicht, oder die Domäne ' & @LogonDomain & ' ist nicht verfügbar!')
    Else
    ; DNS domain name.
    $objTrans = ObjCreate("NameTranslate")
    $objTrans.Init ($ADS_NAME_INITTYPE_GC, "")
    $objTrans.Set ($ADS_NAME_TYPE_1779, @LogonDomain)
    $objTrans.Set ($ADS_NAME_TYPE_NT4, @LogonDomain & "\" & $username)
    $strUserDN = $objTrans.Get ($ADS_NAME_TYPE_1779)
    $UserObj = ObjGet("LDAP://" & $strUserDN)
    If @error Then
    MsgBox(0, 'Fehler', 'Username: ' & $username & ' existiert nicht, oder die Domäne ' & @LogonDomain & ' ist nicht verfügbar!')
    Else

    [/autoit][autoit][/autoit][autoit]

    $Token = $UserObj.securecomputingCom2000-SafeWord-UserID
    $txt2 = GUICtrlCreateInput($Token, 144, 64, 161, 21)
    $lbl2 = GUICtrlCreateLabel("SafeWordToken:", 24, 64, 120, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    GUICtrlSetState(10, $GUI_SHOW)
    EndIf
    EndIf
    $UserObj = ""
    $oMyError = ObjEvent("AutoIt.Error", "")
    ;COM Error function
    Func ComError()
    If IsObj($oMyError) Then
    $HexNumber = Hex($oMyError.number, 8)
    SetError($HexNumber)
    Else
    SetError(1)
    EndIf
    Return 0
    EndFunc ;==>ComError
    Case $msg = $cmd2

    [/autoit][autoit][/autoit][autoit]

    $NewToken = GUICtrlRead( $txt2 )
    $UserObj = ObjGet("LDAP://" & $strUserDN)
    $UserObj.securecomputingCom2000-SafeWord-UserID = $NewToken
    $UserObj.SetInfo

    [/autoit][autoit][/autoit][autoit]

    Case $msg = $exititem
    Exit

    [/autoit][autoit][/autoit][autoit]

    Case $msg = $aboutitem

    [/autoit][autoit][/autoit][autoit]

    EndSelect
    WEnd

    [/autoit]

    Hat vielleich irendjemand eine Idee?


    Grüsse schmuh