Probleme beim Zugriff auf Netzfreigabe

  • Hallo !

    Hier erstmal mein Problem:

    [autoit]


    RunAsSet("user", "test", "password", 1)
    Global $map, $drive
    $drive=DriveGetDrive("all")
    For $i=1 to $drive[0]
    If $drive[$i] = "T:" Then
    $map="False"
    MsgBox(32,"Fehler PROg Starter","FEHLER: Laufwerksbuchstabe wird bereits verwendet!" & @lf & "Starte Programm ohne Updateprüfung." & @lf & @lf & "Bitte wenden Sie sich an die EDV-Abteilung.")
    Else
    $map="True"
    EndIf
    Next
    IF $map="True" Then
    DriveMapAdd("T:", "\\nb-TEST\dvd1", 1, "test\user", "password")
    RunWait("frontend.exe")
    DriveMapDel("T:")
    Else
    RunWait("frontend.exe")
    EndIf
    RunAsSet()

    [/autoit]

    Das Skript soll ein Bestimmtes Programm unter einen anderen Benutzerkontext starten und prüft vorher ob ein Laufwerk T: da ist.
    Wenn dem nicht so ist, so mappt es sich eine bestimmte Freigabe unter dem Laufwerksbuchstaben.
    Die frontend.exe wird im neuen Kontext gestartet, das klappt soweit.
    Das Mapping des Laufwerkes klappt erstmal auch. Mache ich aber einen Doppelklick darauf, so tut sich nichts. Nur ein Rechtklick-> Öffnen funktioniert.
    Wenn auf dem Rechner mit dem Share ein "net session" mache, sehe ich das mein gewünschter User Zugreift. Allerdings taucht da noch ein Konto auf und zwar das Computerkonto der Domäne. Ich vermute daher, das das Mapping zwar von richtigen User durchgeführt wird, aber der Zugriff auch das Laufwerk vom Computerkonto durchgeführt wird. ????????

    Brauche ganz dringend Hilfe.

    Hintergrund:
    Ich habe hier ein Programm "frontend.exe" welches bei jedem Start das Laufwerk auf Updates prüft aus welchem heraus es installiert wurde. Die Installation des Updates können nur lokale Admins durchführen.
    Unsere User machen das aber allein, sollen aber keine lokalen Admins sein.
    Mein Gedanke war jetzt das Programm im Kontext eines lokalen Admins auszuführen damit das Update klappt.
    Leider prüft das Programm das gemappte Laufwerk nicht somit keine Updates. :hammer:

    Hab ich vielleicht irgendwo einen Logikfehler drin ??


    MfG
    Gawe

    • Offizieller Beitrag

    Hi,

    was passiert denn so?

    Spoiler anzeigen
    [autoit]

    RunAsSet("user", @ComputerName, "pw", 1) ; sollte anstatt Test nicht @Computername stehen?
    Global $drive = DriveGetDrive("all")
    For $i = 1 To $drive[0]
    If $drive[$i] = "T:" Then
    MsgBox(32, "Fehler PROg Starter", "FEHLER: Laufwerksbuchstabe wird bereits verwendet!" & @LF & "Starte Programm ohne Updateprüfung." & @LF & @LF & "Bitte wenden Sie sich an die EDV-Abteilung.")
    Exit (0)
    EndIf
    Next
    If DriveMapAdd("T:", "\\nb-TEST\dvd1", 1, "domain\username", "password") = 0 Then MsgBox(16, "error", "Laufwerk konnte nicht zugewiesen werden: Fehler: " & @error)
    If FileExists("T:\frontend.exe") Then RunWait("T:\frontend.exe")
    DriveMapDel("T:")
    RunAsSet()

    [/autoit]

    So long,

    Mega

  • Hallo !
    Frohes neues Jahr erstmal.

    Der Benutzer der sich anmeldet ist ein Domänenbenutzer daher kann ich "@computername" nicht benutzen. "Test" ist also die Domäne.
    Ich hatte die Vermutung das DriveMapAdd irgendwie nich sauber funzt und wollte es jetzt mit folgendem Aufruf versuchen:

    [autoit]

    Run(@ComSpec & " /c " & 'net use T: \\ws-1001058\dvd1', "", @SW_SHOW)

    [/autoit]

    Und siehe da - nischt funktioniert :weinen:

    Naja. Also der Aufruf selbst ist i.O. Aber sobald ich da ein "RunAsSet" nutze funktioniert es nicht.
    Was kann ich noch tun ?


    Fragt sich Gawe.

    • Offizieller Beitrag

    Hallo!

    Probiers mal so:

    Spoiler anzeigen
    [autoit]

    If Not IsAdmin() Then
    RunAsSet("user", "test", "password")
    Run(@ScriptFullPath, @ScriptDir, @SW_HIDE)
    RunAsSet()
    Exit
    EndIf

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

    Global $map, $drive
    $drive=DriveGetDrive("all")
    For $i=1 to $drive[0]
    If $drive[$i] = "T:" Then
    $map="False"
    MsgBox(32,"Fehler PROg Starter","FEHLER: Laufwerksbuchstabe wird bereits verwendet!" & @lf & "Starte Programm ohne Updateprüfung." & @lf & @lf & "Bitte wenden Sie sich an die EDV-Abteilung.")
    Else
    $map="True"
    EndIf
    Next
    IF $map="True" Then
    DriveMapAdd("T:", "\\nb-TEST\dvd1", 1, "test\user", "password")
    RunWait("frontend.exe")
    DriveMapDel("T:")
    Else
    RunWait("frontend.exe")
    EndIf

    [/autoit]

    So wird am Anfang geprüft ob das Script mit Admin-Rechten ausgeführt wird. Ist das nicht der Fall wird das Script nach RunAsSet das Script mit Adminrechten noch mal ausgeführt.