Netzlaufwerk komfortfunktion

  • Hallo AutoIT-Gemeinde,

    in Windows kann ich ein Netzlaufwerk auch über die Kommandozeile einbinden. Der Kommandezeile kann ich auch einen Benutzernamen und ein Passwort mitgeben. Was aber nun, wenn Benutzername und Passwort weiterhin Userabhängig bleiben soll...?

    Ich hätte gerne folgendes Programm, bekomme es aber alleine nicht umgesetzt ;( und genau hier hoffe ich auf eure Unterstützung.

    1. Ein Fenster soll sich öffnen
    2. Benutzername wird abgefragt
    3. Passwort wird abgefragt
    4. Klick auf einen Button "Verbinden" mountet das Netzlaufwerk wobei Benutzername, Passwort und Verbindung zum Netzlaufwerk dauerhaft "gespeichert" bleiben sollen (also auch nach einem Systemneustart noch verfügbar).

    Der Windows-Batch-Befehlt (ohne Benutzername und Passwort) lautet:
    "if not exist z: net use Z: \\192.168.178.1\daten /PERSISTENT:yes"

    Kann hier jemand tatkräftig coden?

    Vielen Dank

  • Leider tut es dass so nicht...

    [autoit]

    ; Verbindet Laufwerk X mit \\192.168.178.1\daten, wobei der Benutzer "user" mit dem Passwort "passwort" benutzt werden soll
    DriveMapAdd("X:", "\\192.168.178.1\daten", 0, "user", "passwort")

    [/autoit]
  • sieht nun wie folgt aus:

    [autoit]


    ; Verbindet Laufwerk X mit \\192.168.178.1\daten, wobei der Benutzer "user" mit dem Passwort "passwort" benutzt werden soll
    DriveMapAdd("X:", "\\192.168.178.1\daten", 0, "user", "passwort")
    ConsoleWrite(@error & @CR)

    [/autoit]

    und es passiert genau -nichts-

  • Bei dem Scriptaufruf sehe ich im Systray kurz das AutoIT-Symbol und dann passiert nichts weiter. Keine Meldung und kein Mounten des Laufwerks.
    Der laufwerksbuchstabe X ist von Windows nicht in gebrauch und kann noch verwendet werden

    • Offizieller Beitrag

    Mist! Bei "1" muss das Script noch erweitert werden. Nimm mal das:

    [autoit]


    ; Verbindet Laufwerk X mit \\192.168.178.1\daten, wobei der Benutzer "user" mit dem Passwort "passwort" benutzt werden soll
    DriveMapAdd("X:", "\\192.168.178.1\daten", 0, "user", "passwort")
    ConsoleWrite('Error: ' & @error & @CR & 'Extended: ' & @extended & @CR)

    [/autoit]
  • Zitat

    1219 (0x4C3)
    Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed. Disconnect all previous connections to the server or shared resource and try again.

    Hast du das Netzlaufwerk schon unter einen anderen Laufwerksbuchstaben eingebunden?
    Falls nein:
    Bitte starte mal eine cmd und poste uns die ausgabe von "net use"

  • Super - 1000 Dank für den Support und Asche auf mein Haupt... in der Tat, das Laufwerk war schon unter einem anderen Laufwerksbuchstaben eingebunden.

    Nun soll eben der Benutzername und das Passwort variablen eingegeben werden können. Oscar hat eine schönes "_Login"-Script welches ebenfalls Benutzernamen und Passwort einlesen möchte. Dabei kann dass Passwort auch noch in Klartext angezeigt werden.

    Allerdings bin ich unfähig das Fenster im Codeing auf meine Belange anzupassen... und freue mich auf weitere Unterstützung

    • Offizieller Beitrag

    Hier mal ein kleines Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GuiComboBoxEx.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>

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

    Global $aAccount = _LogInBox('Netzlaufwerk anmelden', 6, 'Deutsch', False)
    If @error Then
    Exit
    Else
    $ret = DriveMapAdd("x:", "\\192.168.178.1\daten", 1, $aAccount[0], $aAccount[1]) ; Flag = 1 für Persistent mapping
    ConsoleWrite('Returncode: ' & $ret & @CR & 'Error: ' & @error & @CR & 'Extended: ' & @extended & @CR)
    EndIf

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

    #cs
    ======================================================================================================================
    Function Name: _LogInBox($sTitle [, $iMinLen [,$sStartLang [, $bPassVisible=True [, $iXPos=-1 [, $iYPos=-1]]]]])
    Description: Eingabefenster für Benutzername und Passwort
    Parameter(s): $sTitle = Fenstertitel
    optional: $iMinLen = Mindestlänge des Passworts (Standard = keine Mindestlänge)
    optional: $sStartLang = die Sprache auswählen (Standard = Deutsch)
    optional: $bPassVisible = True/False = Passwort sichtbar anzeigen Ja/Nein (Standard = Ja)
    optional: $iXPos = Horizontale Position des Fensters (Standard = zentriert)
    optional: $iYPos = Vertikale Position des Fensters (Standard = zentriert)
    Return Value(s): Array mit 2 Elementen (Benutzername und Passwort)
    Bei "Abbrechen" oder "Schließen" wird @error = 1
    Required: #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiComboBoxEx.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>
    Author(s): Oscar (http://www.autoit.de)
    ======================================================================================================================
    #ce
    Func _LogInBox($sTitle, $iMinLen = 0, $sStartLang = 'Deutsch', $bPassVisible = True, $iXPos = -1, $iYPos = -1)
    If $iMinLen < 0 Or $iMinLen = Default Then $iMinLen = 0
    If $sStartLang = -1 Or $sStartLang = Default Then $sStartLang = 'Deutsch'
    If $bPassVisible = -1 Or $bPassVisible = 'Default' Then $bPassVisible = True
    If $iXPos < 0 Or $iXPos = Default Or $iXPos > @DesktopWidth Then $iXPos = -1
    If $iYPos < 0 Or $iYPos = Default Or $iXPos > @DesktopHeight Then $iYPos = -1
    Local $hGui, $hUserLabel, $hUser, $hPass, $hCheck, $hLanguage, $hCancel, $hOk
    Local $iOpt, $sStyle, $sTmp, $aLanguage, $iLanguage, $hImage
    Local $iErr, $sFont = 'Arial', $aOut[2]
    Local $iBGColorInner = 0xBBBBBB, $iBGColorOuter = 0xEEEEEE
    Local $sIconsPath = @ScriptDir & '\icons.icl'
    Local $sLang = 'Dansk|Deutsch|English|Français'
    Local $aTranslation[4][7] = [ _
    ['Brugernavn:' & @CRLF & '(påkrævet)', _ ; Dänisch
    'Password:', _
    @CRLF & '(mindst ' & $iMinLen & ' tegn)', _
    '&Password synlige', _
    'Abonner...', _
    'Annuller', ''], _
    ['Benutzername:' & @CRLF & '(erforderlich)', _ ; Deutsch
    'Passwort:', _
    @CRLF & '(min. ' & $iMinLen & ' Zeichen)', _
    '&Passwort sichtbar', _
    'Anmelden...', _
    'Abbrechen', ''], _
    ['Username:' & @CRLF & '(needed)', _ ; Englisch
    'Password:', _
    @CRLF & '(min. ' & $iMinLen & ' Chars)', _
    '&Password visible', _
    'Log in...', _
    'Cancel', ''], _
    ['Nom:' & @CRLF & '(nécessaire)', _ ; Französisch
    'mot de passe:', _
    @CRLF & '(min. ' & $iMinLen & ' lettre)', _
    '&mot de passe visible', _
    'déclarer...', _
    'Annuler', '']]
    $aLanguage = StringSplit($sLang, '|')
    For $i = 1 To $aLanguage[0]
    If $sStartLang = $aLanguage[$i] Then $iLanguage = $i - 1
    Next
    $iOpt = Opt('GUIOnEventMode', 0)
    $hGui = GUICreate($sTitle, 343, 200, $iXPos, $iYPos, BitOR($WS_SYSMENU, $WS_VISIBLE))
    GUISetIcon(@SystemDir & '\shell32.dll', -212)
    GUISetBkColor($iBGColorOuter)
    GUICtrlCreateLabel('', 5, 5, 325, 120, -1, $WS_EX_CLIENTEDGE)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetBkColor(-1, $iBGColorInner)
    $hUserLabel = GUICtrlCreateLabel($aTranslation[$iLanguage][0], 12, 17, 90, 35)
    GUICtrlSetFont(-1, 9, 400, 0, $sFont)
    GUICtrlSetBkColor(-1, $iBGColorInner)
    $hUser = GUICtrlCreateInput('', 115, 20, 205, 25)
    GUICtrlSetFont(-1, 10, 400, 0, $sFont)
    If $iMinLen > 0 Then
    $aTranslation[$iLanguage][6] = $aTranslation[$iLanguage][1] & $aTranslation[$iLanguage][2]
    Else
    $aTranslation[$iLanguage][6] = $aTranslation[$iLanguage][1]
    EndIf
    $hPassLabel = GUICtrlCreateLabel($aTranslation[$iLanguage][6], 12, 63 + ($iMinLen = 0) * 6, 100, 35)
    GUICtrlSetFont(-1, 9, 400, 0, $sFont)
    GUICtrlSetBkColor(-1, $iBGColorInner)
    $hPass = GUICtrlCreateInput('', 115, 65, 205, 25)
    GUICtrlSetFont(-1, 10, 400, 0, $sFont)
    GUICtrlSendMsg($hPass, $EM_SETPASSWORDCHAR, Not $bPassVisible * Asc('*'), 0)
    $hCheck = GUICtrlCreateCheckbox($aTranslation[$iLanguage][3], 120, 92, 200, 25)
    GUICtrlSetFont(-1, 9, 400, 0, $sFont)
    GUICtrlSetBkColor(-1, $iBGColorInner)
    If $bPassVisible Then GUICtrlSetState(-1, $GUI_CHECKED)
    $hLanguage = _GUICtrlComboBoxEx_Create($hGui, '', 10, 135, 110, 140, $CBS_DROPDOWNLIST)
    If FileExists($sIconsPath) Then
    $hImage = _GUIImageList_Create(32, 20, 5, 4, 4)
    _GUIImageList_AddIcon($hImage, $sIconsPath, 0, True)
    _GUIImageList_AddIcon($hImage, $sIconsPath, 1, True)
    _GUIImageList_AddIcon($hImage, $sIconsPath, 2, True)
    _GUIImageList_AddIcon($hImage, $sIconsPath, 3, True)
    _GUICtrlComboBoxEx_SetImageList($hLanguage, $hImage)
    EndIf
    _GUICtrlComboBoxEx_SetItemHeight($hLanguage, 0, 25)
    For $i = 1 To $aLanguage[0]
    _GUICtrlComboBoxEx_AddString($hLanguage, $aLanguage[$i], $i-1, $i-1)
    Next
    _GUICtrlComboBoxEx_SetCurSel($hLanguage, $iLanguage)
    $hCancel = GUICtrlCreateButton($aTranslation[$iLanguage][5], 250, 135, 80, 25)
    GUICtrlSetFont(-1, 9, 400, 0, $sFont)
    $hOk = GUICtrlCreateButton($aTranslation[$iLanguage][4], 160, 135, 80, 25, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 9, 400, 0, $sFont)
    GUICtrlSetState(-1, $GUI_DISABLE)
    WinSetOnTop($hGui, '', 1)
    GUICtrlSetState($hUser, $GUI_FOCUS)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $hCancel
    $iErr = 1
    ExitLoop
    Case $hCheck
    GUICtrlSendMsg($hPass, $EM_SETPASSWORDCHAR, Not BitAND(GUICtrlRead($hCheck), $GUI_CHECKED) * Asc('*'), 0)
    GUICtrlSetState($hPass, $GUI_FOCUS)
    Case $hOk
    $aOut[0] = GUICtrlRead($hUser)
    $aOut[1] = GUICtrlRead($hPass)
    ExitLoop
    EndSwitch
    If Not _GUICtrlComboBoxEx_GetDroppedState($hLanguage) Then
    If _GUICtrlComboBoxEx_GetCurSel($hLanguage) <> $iLanguage Then
    $iLanguage = _GUICtrlComboBoxEx_GetCurSel($hLanguage)
    If $iMinLen > 0 Then
    $aTranslation[$iLanguage][6] = $aTranslation[$iLanguage][1] & $aTranslation[$iLanguage][2]
    Else
    $aTranslation[$iLanguage][6] = $aTranslation[$iLanguage][1]
    EndIf
    GUICtrlSetData($hUserLabel, $aTranslation[$iLanguage][0])
    GUICtrlSetData($hPassLabel, $aTranslation[$iLanguage][6])
    GUICtrlSetData($hCheck, $aTranslation[$iLanguage][3])
    GUICtrlSetData($hCancel, $aTranslation[$iLanguage][5])
    GUICtrlSetData($hOk, $aTranslation[$iLanguage][4])
    GUICtrlSetState($hUser, $GUI_FOCUS)
    EndIf
    EndIf
    If GUICtrlRead($hUser) <> '' And StringLen(GUICtrlRead($hPass)) >= $iMinLen Then
    If BitAND(GUICtrlGetState($hOk), $GUI_DISABLE) Then GUICtrlSetState($hOk, $GUI_ENABLE)
    Else
    If BitAND(GUICtrlGetState($hOk), $GUI_ENABLE) Then GUICtrlSetState($hOk, $GUI_DISABLE)
    EndIf
    WEnd
    Opt('GUIOnEventMode', $iOpt)
    GUIDelete($hGui)
    Return SetError($iErr, 0, $aOut)
    EndFunc ;==>_LogInBox

    [/autoit]
  • Wiederholt vielen Dank :) allerdings wirft das Script einen Fehler

    >"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\...au3"
    C:\Users....au3 (40) : ==> Error parsing function call.:
    If $iMinLen < 0 OrOr $iMinLen = Default Then $iMinLen = 0
    If $iMinLen < 0 ^ ERROR
    >Exit code: 1 Time: 0.476

  • >"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Users\....au3"
    C:\Users\....au3 (102) : ==> Error parsing function call.:
    GUICtrlSendMsg($hPass, $EM_SETPASSWORDCHAR, NotNot $bPassVisible * Asc('*'), 0)
    GUICtrlSendMsg($hPass, $EM_SETPASSWORDCHAR, ^ ERROR
    >Exit code: 1 Time: 0.742

  • Das passiert wenn man die "Code kopieren" Funktion des Autoit-Tags verwendet. ( Bei der das Popup geöffnet wird zum kopieren )
    AndAnd --> And
    OrOr --> Or
    NotNot --> Not
    Entweder übersetzen oder manuell markieren und kopieren ;)