Programme als Administrator starten

  • Hallo!

    Ich möchte Excel als Administrator starten. Aber egal welchen Beispielcode ich nutze, es wird nichts gestartet. (Windows 10, Surface Pro 3)

    Bei diesem Code z.B. tut sich nichts. Es wird lediglich >Exit code: 0 Time: 1.12 ausgegegen.

    Wie kann ich meinen PC überreden doch noch ein Programm als Administrator zu starten? Es soll Excel als Administrator gestartet und natürlich eine Kennwortgeschützte Datei geöffnet werden. Normales Öffnen der Datei funktioniert natürlich, aber bei Adminrechten scheitert es.

    Als besondere "Herausforderung":
    Da das Script auf anderen Rechnern genutzt werden soll kenne ich natürlich weder Benutzername noch dessen Kennwort. Habt ihr einen Beispielcode zur Abfrage von Benutzername und Kennwort? Vielleicht mit Speicherung in einer INI-Datei (zum Schutz vor "Spionage" im persönlichen Ordner abzulegen), zur späteren Nutzung (um nicht jedes Mal Kennwort und Benutzername eingeben zu müssen).

    Danke!

    Gruß, René

  • Versuch mal #RequireAdmin in der ersten Programmzeile.

    Edit:

    Nein, du solltest natürlich, wie es in der Hilfe steht, den vollen Pfad angeben. Vielleicht liegts daran. Und vielleicht den Admin als Username setzen, nicht zwingend den aktiven!

    Ja, das mit der Speicherung geht.

    1. Ich baue dir dein Skript mal mit Abfrage um:

    Sollte hoffentlich funktionieren. Den @ScriptDir flag kannst du dir eigentlich klemmen.

    2. Ich bastle dir vielleicht mal - wenn du willst - ein Skript zusammen, dass du in einer INI-Datei die Passwortdaten mit Benutzeroberfläche speichern (lassen) kannst. Grund: wenn du die Zugangsdaten im Klartext in der INI hast, ist das sehr gefährlich.

    LG Olfibits

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

    Einmal editiert, zuletzt von olfibits (11. Juli 2017 um 17:45) aus folgendem Grund: Anders lief das Skript nicht.. :-)

  • Hallo mumpel

    das habe ich gerade in der englischen Hilfe gefunden:

    Aktuell startest du ja das notepad mit dem aktuellen User + dem hinterlegten Password. -> möglicherweise stimmen die nicht überein

    Grüsse Ru642

  • Hallo erst einmal,

    mit

    AutoIt
    RunAs(@UserName, @ComputerName, $sPass, 1, $sProc, @ScriptDir)

    Startest du ja als aktuell angemeldeter Benutzer das Programm. Entweder ist der schon Admin oder nicht.
    Seit Windows 7 wird das Programm dank mit UAC-Kontolle in der Regel doch ohne Admin-Rechte gestartet.

    Einfach Lösung:
    Als erste Zeile

    AutoIt
    #include <AutoItConstants.au3>

    Dann kannst du auch den "normalen" Run-Befehl nehmen ohne Benutzerangabe
    Bei Run() solltest du immer den ganzen Pfad zum zu startenden Programm angeben.

    Statt Run kannst du auch ShellExecute() nehmen. Der Befehl prüft was er bekommt und startet das zugehörige Programm.
    Klingt verwirrend ...

    Dem Befehl kannst du gleich die Excel-Datei mitgeben. Das ist dann als ob du einen Doppelklick auf die Excel-Datei gemacht hast
    Zusammen mit #RequireAdmin hättest du als 2-zeiler alles was du willst:


    AutoIt
    #RequireAdmin
    ShellExecute("C:\Ordner\Excel.xls")

    Hat der ausführende Benutzer keine Adminrechte so poppt die UAC-Kontrolle auf und fragt.
    Ist es nur ein normaler Benutzer geht sogar die Benutzerauswahl / Benutzername und Kennwort-Dialog auf.

  • Hmm, komisch. Irgendwie funktioniert das bei mir auch nur ohne den WorkingDir Parameter und anstatt 1 bei dem Profil die 0. Hab das mal abgeändert. An sich funktioniert meine Abspeicherungsform schon, aber die Verschlüsselungsfunktion macht noch Zicken. Sollte sich gleich haben... 8)

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • @ru642
    Danke! Kenne ich. Der funktioniert aber nicht.

    @BLinz
    Danke! Funktioniert jetzt auf dem Surface. Weshalb "#RequireAdmin" bei meinen Tests zuerst nie funktioniert hat weiss ich nicht. Erscheint bei diesem Code eine Fehlermeldung wenn jemand keine Adminrechte hat, oder wird die Anwendung einfach ohne Admin-Rechte gestartet?


    AutoIt
    #include <Excel.au3>
    #include <MsgBoxConstants.au3>
    
    
    #RequireAdmin
    Local $FilePath1 = @ScriptDir & "\Office-Admin_closed.xlsb"
    Local $sPassword = "******"
    Local $writeResPassword = "******"
    Local $oExcel = _Excel_Open()
    Local $oWorkbook = _Excel_BookOpen($oExcel, $FilePath1, 0, True, $sPassword, $writeResPassword)

    Dann hoffe ich mal dass das auf den anderen Rechner auch funktioniert, ohne AutoIt. ;)


  • Hat der ausführende Benutzer keine Adminrechte so poppt die UAC-Kontrolle auf und fragt.
    Ist es nur ein normaler Benutzer geht sogar die Benutzerauswahl / Benutzername und Kennwort-Dialog auf.

    Das ist übrigens unerwünscht. Hat der angemeldete Benutzer keine Adminrechte soll die Anwendung/Datei nicht aufgerufen werden. Der Benutzer soll dann auch nicht gefragt werden. Stattdessen soll eine Meldung erscheinen dass Adminrechte nicht vorhanden sind.

  • Oh nein, zu Testzwecken war das noch falsch drin, so wärs richtig (die Funktionen _Encrypt() und _Decrypt() in beiden Skripten überschreiben):

    Und das $key = "Passwort" bitte irgendwie abändern.

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • Danke an alle! Ist recht einfach wenn man Geduld hat. Erinnert ein bisschen an VBA (das kann ich "recht gut"). Mitder Vollversion von "SciTE" sind dann auch eigene Icons möglich.

    @olfibits
    Kann es sein dass Du im falschen Thread gelandet bist? ;)

  • Hä nein, wieso? ;)
    Ich hatte bloß einen kleinen Fehler in den Hilfsfunktionen, die für das Verschlüsseln für die INI-Datei verantwortlich sind. In dem Anhang von vorher wäre auch ein Skript mit Interface, mit dem man die Admin-Zugangsdaten speichern kann. Aufgerufen wird das mit dem anderen Skript.

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • neenee, das ist nur, weil es sehr riskant wäre, Benutzernamen und Passwort im Klartext abzuspeichern. Schon OK. Kannst übrigens Sonst den grünen Haken setzen.

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • Das ist übrigens unerwünscht. Hat der angemeldete Benutzer keine Adminrechte soll die Anwendung/Datei nicht aufgerufen werden. Der Benutzer soll dann auch nicht gefragt werden. Stattdessen soll eine Meldung erscheinen dass Adminrechte nicht vorhanden sind.

    Wäre es nicht einfach die Excel-Datei dort abzulegen wo dann auch nur berechtigte Personen rankommen? Microsoft hat sich ganz viel Mühe mit Dateisystemberechtigungen gemacht.
    Einfach in einen Ordner oder Freigabe wo nur die rankommen die auch die Datei nutzen sollen.

    Klar kannst du das so machen, klingt nur umständlich um den Zugriff nur auf bestimmte Benutzer einzugrenzen.
    Und wenn es mindestens Excel 2010 und das Passwort ausreichend lang ist gilt die Excel-Verschlüsselung prinzipiell als (ausreichend) sicher

  • Wäre es nicht einfach die Excel-Datei dort abzulegen wo dann auch nur berechtigte Personen rankommen?

    Nein.

    1. Ich entwickle privat zuhause (Hobby, kein "Arbeitgeberauftrag"). Reine Freizeitarbeit. Und wenn ich schon soetwas machen dann sollen auch andere Anwender davon provitieren.
    2. Ich habe selber kein BKU.
    3. Ich bin kein Administrator im BKU.
    4. Die Anwender sollen das Tool auch zuhause auf ihren Rechnern nutzen dürfen, aber eben nicht auf Firmenrechnern.
    5. Das wird am Ende eine Alternative zu GPEDIT.msc. Nur etwas besser als GPEDIT (dreisprachig [Englisch, Deutsch, Französich], und mit besserer Erklärung). GPEDIT ist m.E. ja nicht so gut. Da fehlt z.B. der Wertetyp, und man kann nur die Gruppenrichtlinie ändern. Mein Tool ist so aufgebaut dass die Einstellung auch nur für den angemeldeten Benutzer gesetzt werden können. Da ich nur VBA kann "muss"/möchte ich das in VBA machen.