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
Problem mit DriveMapAdd
-
- [ gelöst ]
-
litze -
2. Juni 2009 um 14:56 -
Geschlossen -
Erledigt
-
-
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
EndIfGUICreate($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)
EndIfCase $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]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>Dim Const $Titel = "Verbindung zum HOME_Laufwerk"
[/autoit] [autoit][/autoit] [autoit]
Dim Const $Laufwerk = "h:"
$Freigabe = "\\192.168.0.10\home_sh$\"$d = DriveMapGet($Laufwerk)
[/autoit] [autoit][/autoit] [autoit]
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
EndIfGUICreate($Titel, 320, 120, @DesktopWidth / 2 - 160, @DesktopHeight / 2 - 45)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel("Benutzer: ", 10, 10)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateLabel("Passwort: ", 10, 40)$i1 = GUICtrlCreateInput("", 70, 5, 240, 20)
[/autoit] [autoit][/autoit] [autoit]
$i2 = GUICtrlCreateInput("", 70, 35, 240, 20, $ES_PASSWORD)
$ok = GUICtrlCreateButton("Ok", 160, 75, 70, 20, 1)
$esc = GUICtrlCreateButton("Abbrechen", 240, 75, 70, 20)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()Select
[/autoit]
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 -
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!