Problem mit DriveMapAdd

  • Hallo,
    ich versuche ein Laufwerk auf eine Serverfreigabe zu mappen; das script funktioniert, wenn ich als Administrator angemeldet bin, bricht aber mit einem "Allgemeinen Fehler" ab, wenn es als eingeschränkter Benutzer gestartet wird. Was tun ?
    mfg litze

    Einmal editiert, zuletzt von litze (4. Juni 2009 um 09:08)

  • wird außer dem Mapping noch etwas in dem Script gemacht?
    Vielleicht ligt es ja nicht am mapping.
    Um den Fehler eingrenzen zu können kannst du ja mal ein Einzellerscript schreiben und schauen ob das DriveMapAdd dort klappt.
    Schon mal @error kontrolliert?

  • poste doch mal dein script oder scriptausschnitt und den fehler, dann müssen wir nicht kaffeesatz lesen :)

  • #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>

    Dim const $Titel = "Verbindung zum HOME_Laufwerk"
    Dim const $Laufwerk = "h:"
    $Freigabe = "\\192.168.0.10\home_sh$\"

    $d=DriveMapGet ( $Laufwerk )
    if $d<>"" Then
    $text = "Soll die Verbindung " & $d & " (" & $Laufwerk & ") getrennt werden?"
    $ret = MsgBox(1,$Titel,$text)
    if $ret = 1 Then
    $d1=DriveMapDel( $Laufwerk )
    if $d1=1 Then
    MsgBox(0,$Titel,"Verbindung wurde getrennt")
    Else
    MsgBox(0,$Titel,"Verbindung konnte nicht getrennt werden.")
    EndIf
    EndIf
    EndIf

    GUICreate($Titel, 320, 120, @DesktopWidth /2 - 160, @DesktopHeight /2 - 45)

    GUICtrlCreateLabel ("Benutzer: ", 10, 10)
    GUICtrlCreateLabel ("Passwort: ", 10, 40)

    $i1 = GUICtrlCreateInput("", 70, 5, 240, 20)
    $i2 = GUICtrlCreateInput("", 70, 35, 240, 20, $ES_PASSWORD)
    $ok = GUICtrlCreateButton("Ok", 160, 75, 70, 20, 1)
    $esc= GUICtrlCreateButton("Abbrechen", 240, 75, 70, 20)

    GUISetState()

    While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $ok
    $User = GUICtrlRead ($i1)
    $Pw = GUICtrlRead ($i2)
    $Freigabe = $Freigabe&$User
    $x1=DriveMapAdd ( $Laufwerk, $Freigabe , 0, $User, $Pw )

    If $x1 = 1 Then
    Run("explorer.exe /e," & $Laufwerk)
    ExitLoop
    Else
    $Meldung = "Allgemeiner Fehler"
    if @error = 2 then
    $Meldung = "Zugriff verweigert"
    Endif
    if @error = 3 then
    $Meldung = "Gerät ist bereits verbunden"
    Endif
    if @error = 6 then
    $Meldung = "Das Passwort ist falsch"
    Endif
    MsgBox(0, "Fehler", $Meldung)
    EndIf

    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $esc
    ExitLoop
    EndSelect
    WEnd

  • Hallo litze,

    wenn es als Amin läuft und als normaler User nicht, liegt es wohl daran dass der normale User keine Berechtigung hat sich mit dem Laufwerk zu verbinden. Du könntest versuchen, die Freigabe über den Namen des Servers anzusprechen also so

    [autoit]

    $Freigabe = "\\ServerName\home_sh$\"

    [/autoit]


    Interssant wäre in beiden Fällen mit welcher Fehlermeldung dein Skript abbricht. Eine 2. Möglichkeit wäre #RequireAdmin zu verwenden, dies setzt jedoch voraus, dass der normale User dass Admin Passwort kennt, was nicht Sinn der Sache sein kann.

    mfg (Auto)Bert

  • Was ich nicht verstehe ist, dass es mir auch als eingeschränkter user möglich ist, mit net use eine Verbindung herzustellen. Ich dachte eigentlich, dass der autoit-befehl nur eine verklausulierte Form der gleichen Windowsfunktionalität sei ?! Irre ich mich da ?
    Die Fehlermeldung beim Aufruf des scripts ist wirklich der "Allgemeine Fehler" - also wohl @error = 0 ?!

    • Offizieller Beitrag

    Teste mal hiermit und schreib, welche Fehlermeldung kommt:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <EditConstants.au3>

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

    Dim Const $Titel = "Verbindung zum HOME_Laufwerk"
    Dim Const $Laufwerk = "h:"
    $Freigabe = "\\192.168.0.10\home_sh$\"

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

    $d = DriveMapGet($Laufwerk)
    If $d <> "" Then
    $text = "Soll die Verbindung " & $d & " (" & $Laufwerk & ") getrennt werden?"
    $ret = MsgBox(1, $Titel, $text)
    If $ret = 1 Then
    $d1 = DriveMapDel($Laufwerk)
    If $d1 = 1 Then
    MsgBox(0, $Titel, "Verbindung wurde getrennt")
    Else
    MsgBox(0, $Titel, "Verbindung konnte nicht getrennt werden.")
    EndIf
    EndIf
    EndIf

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

    GUICreate($Titel, 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)

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

    GUICtrlCreateLabel("Benutzer: ", 10, 10)
    GUICtrlCreateLabel("Passwort: ", 10, 40)

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

    $i1 = GUICtrlCreateInput("", 70, 5, 240, 20)
    $i2 = GUICtrlCreateInput("", 70, 35, 240, 20, $ES_PASSWORD)
    $ok = GUICtrlCreateButton("Ok", 160, 75, 70, 20, 1)
    $esc = GUICtrlCreateButton("Abbrechen", 240, 75, 70, 20)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

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

    Select
    Case $msg = $ok
    $User = GUICtrlRead($i1)
    $Pw = GUICtrlRead($i2)
    $Freigabe = $Freigabe & $User
    $x1 = DriveMapAdd($Laufwerk, $Freigabe, 0, $User, $Pw)
    $err = @error
    If $x1 = 1 Then
    Run("explorer.exe /e," & $Laufwerk)
    ExitLoop
    Else
    Dim $aMeldung[7] = ['kein Fehler', 'Undefinierter/anderer Fehler', 'Der Zugriff wurde verweigert', 'Das Gerät ist bereits zugewiesen', 'Ungültiger Gerätename', 'Ungültige Remote-Freigabe', 'Ungültiges Passwort']
    MsgBox(0, "Fehler", $aMeldung[$err])
    EndIf
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $esc
    ExitLoop
    EndSelect
    WEnd

    [/autoit]
  • ok. werde ich testen; allerdings komme ich heute nicht mehr ans Gerät - ich habe bereits die Segel gestrichen !
    aber schon mal vielen Dank für die Hilfen bis hierhin !!

  • @ Oscar: Ich habe das script mit den differenzierten Fehlermeldungen getestet: es kommt ein Undefinierter/anderer Fehler, was leider die am wenigsten weiterhelfende Möglichkeit ist.

    autoBert: Ich habe ferner dem Rat folgend, die IP-Adresse durch den Namen des Servers ersetzt - ohne Wirkung !

    Bin also immer noch ratlos !

  • Hallo,

    es funktioniert endlich wie es soll ! Des Rätsels Lösung war, dem Benutzername den "Namen des Domäne\" voranzustellen.
    Allen, die mitgeholfen haben, nochmals vielen Dank.

    mfg litze

    • Offizieller Beitrag

    Hallo,

    mach mal am Ende von $Freigabe den Backslash weg! Es sollte eingentlich auch ohne Domäne gehen, ausser es gibt auch ein Lokalen Benutzer mit dem gleichen Namen!