Programme mit 2 unterschiedlichen Admin-Passwörter installieren

  • Hallo zusammen,

    ich möchte gerne Programme zu Verfügung stellen, damit unsere User diese selbst installieren können.
    Jetzt gibt es aber ein Problem: Es gibt bei uns zwei unsterschiedliche Administratoren-Passwörter.
    Einmal der normale Admin und der CAD-Admin.

    Wie kann ich es anstellen, dass geprüft wird welcher Admin vorhanden ist und diesen dann benutzt?
    Mit dem normalen Admin funktioniert es so, dass das Verzeichnis lokal kopiert wird, von dort ausgeführt wird
    und anschließend wieder gelöscht.

    Aber das mit dem zweitem Admin krieg ich nicht hin.

    Kann mir da jemand helfen?

    Hier das Beispielscript für den Firefox.

    [autoit]

    Local $UserName = "Administrator"
    Local $Password = "********"
    Local $ScriptDir = @UserProfileDir & "\Temp\Firefox\"
    Local $Program = $ScriptDir & "\Firefox Setup 3.5.7.exe"
    Local $workingdir = @UserProfileDir & "\Temp\Firefox\"

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

    DirCreate($ScriptDir)
    MsgBox(0, "Programm-Installation", "Die Dateien werden nun kopiert und anschließend ausgeführt.")
    FileCopy("\\elkafax\VOL1\01-EDV\01-Standardsoftware\Firefox\*.*", $ScriptDir, 9)
    RunAs($UserName, @ComputerName, $Password, 0, $Program, $workingdir)

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

    WinWait("Mozilla Firefox-Installation" ,"Willkommen beim")
    WinActivate("Mozilla Firefox-Installation" ,"Willkommen beim")
    ControlClick("Mozilla Firefox-Installation","Willkommen beim","Button2","left")
    WinWait("Mozilla Firefox-Installation","Installationsart")
    WinActivate("Mozilla Firefox-Installation","Installationsart")
    ControlClick("Mozilla Firefox-Installation","Installationsart","Button2","left")
    WinWait("Mozilla Firefox-Installation","Zusammenfassung")
    WinActivate("Mozilla Firefox-Installation","Zusammenfassung")
    ControlClick("Mozilla Firefox-Installation","Zusammenfassung","Button2","left")
    WinWait("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen")
    WinActivate("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen")
    ControlClick("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen","Button2","left")
    WinWait("Import")
    WinActivate("Import")
    Send("{DOWN}")
    Sleep(2000)
    Send("{ENTER}")
    FileCopy($workingdir & "all.js", "C:\Programme\Mozilla Firefox\greprefs", 9)
    FileCopy($workingdir & "mozilla.cfg", "C:\Programme\Mozilla Firefox", 9)

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

    DirRemove(@UserProfileDir & "\Temp\Firefox\", 1)

    [/autoit]

    Einmal editiert, zuletzt von Rigibid (7. Mai 2010 um 11:10)

  • du kannst mit

    [autoit]

    @UserName

    [/autoit]

    den gerade angemeldeten User abfragen und dann das entsprechende passwort wählen.... hilft dir das?

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Haben die benutzernamen irgendeine besonderheit (zb haben die CAD-Admins ein "cad_" vorm Namen, oder so? - Irgendein Muster halt, an dem das erkannt werden kann)
    Oder gibt es eine Schnittstelle über die der Admin Status (evtl übers Netzwerk) abgefragt werden kann?

    Alternativ kannst du die Usernames und den dazugehörigen Admin-Status in einem 2D-Array führen.

    Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    $Status = _GetAdminStatus("Anton")
    MsgBox(0,"Anton",$Status)
    $Status = _GetAdminStatus("Rudolf")
    MsgBox(0,"Rudolf",$Status)

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

    Func _GetAdminStatus($sUSER)
    Local $aAdmins[8][2] = [ _ ; 1 = Admin, 2 = CAD-Admin
    ["Hans", 1],["Peter", 2],["Willi", 1],["Herbert", 1], _
    ["Fritz", 1],["Anton", 2],["Karl", 2],["Rudolf", 1] _
    ]
    For $i = 0 To UBound($aAdmins)-1
    If $sUSER = $aAdmins[$i][0] Then Return $aAdmins[$i][1]
    Next
    EndFunc ;==>_GetAdminStatus

    [/autoit]
  • Also bei den CAD-Rechnern gibt es einen ganz normalen "Administrator" der aber ein anderes Passwort besitzt als der normale.
    Das ist so beabsichtigt, weil es bei den CAD-Benutzern einen gibt, der sich um die installationen auf den CAD-Rechnern kümmert.
    Dieser kümmert sich aber nur um CAD-Programme. Alle anderen "Standart-Programme" sollen die User selbst installieren können.
    Natürlich nur die, die von uns freigegeben werden.

  • haben dann die CAD Rechner eine spezielle Bezeichnung? wenn nicht, dann vielleicht die CAD Rechner Namen in ein array schreiben und dann abfragen und entsprechendes passwort wählen. (falls es nciht zuviele sind)^^

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Leider kenne ich mich noch nicht so gut mit Autoit aus. Deswegen weiß ich nicht wie ich Array benutzen soll.
    Und vom Programmieren sowieso nicht. Ich habe das oben aufgeführte Script von einem Kollegen übernommen
    und ein bisschen bei Autoit gelesen, wie ich die Installationen als Admin ausführen kann. Das wars.

    Vielleicht kannst Du mir ein Beispiel anhand des oben genannten Scripts geben.
    Zum Beispiel wenn Administrator/Passwort1 vorhanden dann führe es aus
    ansonsten benutze Administrator/Passwort2.

  • Also hier mal ein Beispiel wenn das Programm auf einem der beiden (Habe ich jetzt einfach mal 2 Rechner fürs beispiel benutzt) CAD Rechner ausgeführt wird.

    [autoit]


    Local $Password
    $CADAdmin = CADTest()
    If $CADAdmin == 1 then
    $Password = "" ; wenn ich am CAD Rechner bin
    Else
    $Password = "" ; wenn ich an den anderen Rechner bin
    EndIf

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

    Func CADTest()
    Local $aCADRechner[2]
    Local $RechnerTyp = 0

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

    $aCADRechner[0] = "Rechnername1"
    $aCADRechner[1] = "Rechnername2"

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

    For $i=0 to UBound($aCADRechner)
    If @ComputerName == $aCADRechner[$i] then $RechnerTyp = 1
    Next
    Return $RechnerTyp
    EndFunc

    [/autoit]

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Führe einfach RunAs mit dem einen Passwort aus.
    Wenn danach @ERROR gesetzt ist, wars das falsche und du probierst es mit dem anderen. Habs grad getestet, es funktioniert.

  • Habe heute morgen noch mal mit einem Kollegen rumprobiert und habe folgende Lösung gefunden:

    [autoit]

    Local $UserName = "Administrator"
    Local $Password = "********"
    Local $Password2 = "********"
    Local $ScriptDir = @UserProfileDir & "\Temp\Firefox\"
    Local $Program = $ScriptDir & "\Firefox Setup 3.5.7.exe"
    Local $workingdir = @UserProfileDir & "\Temp\Firefox\"
    Local $Fehler = 0

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

    DirCreate($ScriptDir)
    MsgBox(0, "Programm-Installation", "Die Dateien werden nun kopiert und anschließend ausgeführt.")
    FileCopy("\\elkafax\VOL1\01-EDV\01-Standardsoftware\Firefox\*.*", $ScriptDir, 9)
    $Fehler=RunAs($UserName, @ComputerName, $Password, 0, $Program, $workingdir)
    If $Fehler = 0 Then
    RunAs($UserName, @ComputerName, $Password2, 0, $Program, $workingdir)
    EndIf

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

    WinWait("Mozilla Firefox-Installation" ,"Willkommen beim")
    WinActivate("Mozilla Firefox-Installation" ,"Willkommen beim")
    ControlClick("Mozilla Firefox-Installation","Willkommen beim","Button2","left")
    WinWait("Mozilla Firefox-Installation","Installationsart")
    WinActivate("Mozilla Firefox-Installation","Installationsart")
    ControlClick("Mozilla Firefox-Installation","Installationsart","Button2","left")
    WinWait("Mozilla Firefox-Installation","Zusammenfassung")
    WinActivate("Mozilla Firefox-Installation","Zusammenfassung")
    ControlClick("Mozilla Firefox-Installation","Zusammenfassung","Button2","left")
    WinWait("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen")
    WinActivate("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen")
    ControlClick("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen","Button4","left")
    ControlClick("Mozilla Firefox-Installation","Die Installation von Mozilla Firefox wird abgeschlossen","Button2","left")
    FileCopy($workingdir & "all.js", "C:\Programme\Mozilla Firefox\greprefs", 9)
    FileCopy($workingdir & "mozilla.cfg", "C:\Programme\Mozilla Firefox", 9)
    WinWait("Import")
    WinActivate("Import")
    Send("{DOWN}")
    Sleep(2000)
    Send("{ENTER}")

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

    DirRemove(@UserProfileDir & "\Temp\Firefox", 1)

    [/autoit]

    Das einzige was leider nicht funktioniert ist, dass das angelegte Verzeichnis nicht gelöscht wird.
    Das wäre aber nicht so tragisch.

    Vielen Dank nochmal an alle für die Hilfe!!!

  • also genau das was ich gesagt habe X( nur dass du nicht @error sondern die rückgabe testest...