DriveMapAdd

  • Hallo Leute,

    ich bin am Verzweifeln. Der Code ist ein Ausschnitt aus meinem als Dienst laufendem Script. Seit den letzten Windows Update macht dieser Teil Schwierigkeiten.

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

    $drive1 = IniReadSection($file, "Laufwerke")
    $drive2 = IniReadSection($file, "Server")

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

    Func _Netzlaufwerk()
    If Not FileExists(IniRead($file, "Laufwerke", "001", "")) Then
    For $i = 1 To $drive1[0][0]
    DriveMapAdd($drive1[$i][1], $drive2[$i][1], 0,$user_network,$pw_Network)
    Sleep(100)
    Next
    ;If _FileCreate($f) = 1 Then IniWrite($file, "007", "001", "Datensicherung wurde erfolgreich gestartet")
    ;FileClose($file)
    Sleep(500)
    FileWriteLine(IniRead($file, "006", "008", "Nichts gefunden"), "Laufwerke wurden verbunden um " & _NowTime() & @CRLF)
    Sleep(500)
    ;$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    Else
    For $i = 1 To $drive1[0][0]
    DriveMapDel($drive1[$i][1])
    FileWriteLine(IniRead($file, "Server", "001", "Nichts gefunden") & StringRight(IniRead($file, "006", "008", "Nichts gefunden"), 16), "Laufwerke wurden getrennt um " & _NowTime() & @CRLF)
    Sleep(100)
    Next
    IniWrite($file, "007", "001", "Datensicherung wurde erfolgreich beendet")
    FileClose($file)
    If IniRead($file, "Startzeit", "002", "") <> 5 Then
    ;löscht bestehende Sicherung
    If FileExists(IniRead($file, "NAV DB", "010", "Leer")) Then FileRecycle(StringLeft(IniRead($file, "NAV DB", "010", "Leer"), 19) & "*" & StringRight(IniRead($file, "NAV DB", "010", "Leer"), 4))
    EndIf
    Sleep(500)
    ;$rc = _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject, $as_Body, $s_AttachFiles, $s_CcAddress, $s_BccAddress, $s_Username, $s_Password, $IPPort, $ssl)
    EndIf
    EndFunc ;==>_Netzlaufwerk

    [/autoit]

    Wenn der Dienst läuft ist ein Verbinden nicht möglich. Der Dienst wird vom Lokalen Systemkonto gestartet. Es geht insgesamt nur mit diesem Systemkonto. Wenn aber nicht als Dienst dann ist ein Verbinden möglich. Hat jemand eine Idee woran es liegen kann?
    Das trennen geht im übrigen.

    MFG Thomas

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Soweit ich weiß, werden Netzlaufwerke immer unter dem User verbunden der den Befehl absetzt.

    Wenn der Dienst also unter "SYSTEM" läuft, sieht ein angemeldeter User die Laufwerke sowieso nicht !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • hi,
    darum geht es ja nicht.
    Es geht darum das es nach den Windows Update nicht mehr geht. Der Benutzer bei DirveMapAdd ist der Domänadmin mit seinem PW. Damit ging es bisher(ca. 1,5 Jahre). Jetzt geht es nicht mehr.

    MFG
    THOMAS

    MFG ThomasB

    *
    Ich lese viel und gerne (und wenn ich alle Mahnungen durch habe, schmeiße ich sie weg)
    *

  • Hallo!

    das Problem könnte sein, daß eine Sicherheitseinstellung auf dem Rechner der den Share, also die Freigabe hat sagt:
    Verbindung zu mir nur als angemeldeter Domänenuser und nicht als System.

    Hab ein vergleichbares Problem (meines läuft auch als Dienst!), ich umschiffe es mit folgendem Trick:
    (Beispiel mit einem Usere namens Postbote)
    Miniprogramm pwinput.exe (dann kommen 2 Fenster)
    einmal geb ich den usernamen postbote ein, in das zwote das Paßwort des Users.

    auf der Platte schreib ich verschlüsselt (hab da noch eine andere Software, aus deren INI-Einstellungen i.V.m. der IP-Nummer ermittele ich ein internes Passwort) eine
    postbote.pw Datei (ca. 30 Zeichen langer, völlig unsinniger Binärcode wenn das einer anschaut)

    mein Dienst ist jetzt in der Lage (da er ja weiß, wie verschlüsselt wird, ein clearpasswd zu machen, Clear-Password)
    und kann sich das Laufwerk als Benutzer Postbote verbinden.
    Das System ist dadurch ziemlich sicher, durch die Verwendung der IP-Nummer kann auch kein "Angreifer" das Passwort durch kopieren der Passwortdatei auf einen fremden Rechner zum laufen bringen.
    (Im Netzwerk kommt der Benutzer Postbote an und damit ist das Problem erledigt).

    Falls Du das ganze unter VM-WARE auf laufen hast, dann sollte unbedingt vor dem DriveMapAdd noch ein ping rein (das wirkt WUNDER), nachdem die VM-WARE Kiste gesichert hat, geht sonst keine Verbindung mehr.


    Du kannst Das Passwort natürlich auch in die Registry schreiben.

    hier ein Code-Schnipsel aus meinem Dienst:
    if $Networkdomain="NotFound" then
    $Laufwerk=DriveMapAdd("",$Networkshare, 0, $Networkuser, $clearpasswd)
    else
    $Laufwerk=DriveMapAdd("",$Networkshare, 0, $Networkdomain & "\" & $Networkuser, $clearpasswd)
    Endif
    ; Netzwerk muss da sein


    Grüße

    msp-Holzwurm
    PS: meld Dich per PM falls Du nicht weiterkommst, würde mich interessieren:
    SAMBA, CIFS oder VM-WARE mit im Einsatz für diese Problematik suche ich weitere "Leidensgenossen"