ShellExecute mit Programmpfad und Datenbankpfad

  • Hallo
    leider komme ich nicht weiter trotz vielfacher versuche.

    ich möchte über ShellExecute ein Programm starten das ich seither über cmd starte.
    Der Startbefehl lautet wie folgt in der cmd
    start "" "C:\Program Files (x86)\KeePass2x\Keepass.exe" "x:\Eigene Dateien\KeePassDatenbank.kdbx" /pw:passwort

    Ich konnte aber seither Autoit nicht dazu bewegen das Programm mit der Datenbank zu starten
    Ich habe versucht die zwei Pfade in Varablen aneinander zu fügen aber auch das hatte keinen Erfolg
    ShellExecute (""c:\Program Files (x86)\KeePass2x\KeePass.exe""&" "&""x:\Eigene Dateien\Olaf.kdbx"",$Parameter)

    Danke im Voraus für die Hilfe

  • Hi,

    1.Versuch es mal mit Run()

    2.

    AutoIt
    ShellExecute (""c:\Program Files (x86)\KeePass2x\KeePass.exe""&" "&""x:\Eigene Dateien\Olaf.kdbx"",$Parameter)

    Kann nicht funktionieren.

    Wenn du in einem String Anführungsstriche(") benützen möchtest kannst du diese einfach (innerhalb des Strings) doppelt setzen:

    AutoIt
    MsgBox(0,"","Das sind ""Anführungsstriche""")


    oder ' zum einschließen des Strings benützen:

    AutoIt
    MsgBox(0,"",'Das sind "Anführungsstriche"')

    letzteres ergäbe bei deinem String:

    AutoIt
    MsgBox(0,0,'"c:\Program Files (x86)\KeePass2x\KeePass.exe"'&' '&'"x:\Eigene Dateien\Olaf.kdbx"')


    mfg
    Zeitriss

  • Hallo @skorpion-de

    Es sind überhaupt keine zusätzlichen Anführungszeichen notwendig. Einfach ShellExecute("VollerDateiPfad", "VollerDatenbankpfad".
    Bsp:

    AutoIt
    ShellExecute("C:\KeePass.exe", "C:\Database.kdbx")

    Grüße autoiter

  • AutoIt
    ShellExecute ('"c:\Program Files (x86)\KeePass2x\KeePass.exe"','"x:\Eigene Dateien\Datenbank.kdbx"',' /pw:passwort')

    Jetzt startet zwar das Programm und die Datenbank, jedoch wird das Passwort für die Datenbank noch nicht eingetragen
    egal ob ich den Parameter wie folgt eingegeben habe

    AutoIt
    ' /pw:passwort'
    oder 
    '/pw:passwort'
    oder
    'passwort'
  • Du musst die Parameter wie in der cmd eingeben, also:

    AutoIt
    ShellExecute("Pfad\*.exe", '"Pfad" /pw:xxx')


    Der Pfad zur .exe bracht keine Anführungsstriche, wenn du ShellExecute benützt. Nur die Parameter müssen in Anführungsstrichen geschrieben werden(wenn sie Leerzeichen enthalten lönnten).
    Anders ist das bei Run, hier müsstest du beides mit Anführungsstrichen versehen:

    AutoIt
    Run('"Pfad\*.exe" "Pfad" /pw:xxx')

    Edit:
    @autoiter Ups... Hast Recht, das mit den Anführungsstrichen scheint Programm abhängig zu sein.
    Habs bei mir mit der "AutoIt3_x64.exe" getestet und da ging es nicht X/
    Bei "notepad.exe" usw... funktioniert es tatsächlich problemlos ohne Anführungsstriche.

    Einmal editiert, zuletzt von Zeitriss (22. November 2016 um 20:33)

  • Hallo @Zeitriss, @skorpion-de,

    Leerzeichen sind hier überhaupt kein Problem.

    @skorpion-de Schau mal in die Hilfe zu ShellExecute. Der Pfad zur Datenbank ist schon ein Parameter! Deinen Parameter Passwort gibst du als workingdir an ;)

    Es müsste wahrscheinlich so klappen:

    AutoIt
    ShellExecute ("c:\Program Files (x86)\KeePass2x\KeePass.exe", "x:\Eigene Dateien\Datenbank.kdbx /pw:passwort")

    Grüße autoiter

  • So funktioniert es


    AutoIt
    ShellExecute ("c:\Program Files (x86)\KeePass2x\KeePass.exe", '"x:\Eigene Dateien\Datenbank.kdbx"'& " /pw:passwort")

    Die Anführungszeichen benötigt man wegen den Leerzeichen im Pfad

    Danke für die Hilfe

    Jetzt werde ich das noch mit Variablen versuchen damit ich das aus einer ini Datei auslesen kann

  • Die ini-Datei
    die Pfade müssen in doppelte Anführungszeichen

    AutoIt
    [KeePass]
    Url1=""C:\Program Files (x86)\KeePass2x\Keepass.exe""
    Url2=""x:\Eigene Dateien\Olaf.kdbx""
    Parameter=" /pw:passwort"


  • Hi @skorpion-de,

    du schaffst das schon und wenn nicht, wird dir hier geholfen. Allerdings halte ich das alles nicht für klug.
    Schon mit einer Batch-Datei oder einem AutoIt-Skript die Keepass-Datenbank zu öffnen, finde ich hart. Aber OK, wer sucht schon da nach dem Passwort, wenn es nicht gerade "Keepass starten.bat" heißt. Heißt es doch auch nicht, oder???

    Das ganze aber aus einer ini zu laden, kommt mir total schräg vor.

    Wenn man sich für einen digitalen Passwortmanager entscheidet, der alle wichtigen Passworte verschlüsselt, so dass ich nur noch ein sicheres Passwort brauche, so muss ich doch wenigstens auf dieses eine Passwort verdammt gut aufpassen! Den Passwortmanager sollte man auch nur dann entsperrt haben, wenn man ihn gerade braucht. So lange deine DB offen ist, kann sie einfach ausgelesen werden...

    Ich will dir nichts schlechtreden. Der Komfort eines Passwortmanagers ist enorm. Aber wenn du die Sicherheit vergisst...


    EDIT: Jetzt deinen Beitrag gelesen. Da haben wir uns überschnitten. Es ging also nicht um das PW sondern URLs. OK dann bleibt es nur bei der einen Datei, in der dein PW steht. Kann man wohl so machen.

    Grüße autoiter

  • Ist mir alles bewusst, für privat ist das auch nicht gedacht sondern für die Arbeit wo es nervig ist ständig die Passwörter einzugeben, z.T. auch bei Programmen die nach einer kurzen Zeit x ohne Benutzung sich sperren.
    Auf der Arbeit in einem "gesicherten" Bereich kann man das so machen ohne das es zu große Probleme gibt.

    Das mit der Sicherheit ist mir schon bewusst, genau darum will ich auch von der batch Datei weg um die KeePass Datenbank zu öffnen.
    In einer ini-Datei ist sie etwas unauffälliger als in einer batch Datei,

  • Hallo Kanashus,

    das wöre mir natürlich am liebsten, jedoch habe ich mit
    _Crypt_EncryptData
    _Crypt_DecryptData
    absolut keine erfahrung. Benögtigt man dazu ein separates ver- und entsschlüsselungsprogramm?

  • Einfach die Hilfe zu dem Befehl durchlesen. Ganz am Ende steht auch meistens ein Beispielcode.
    Also, ganz wichtig: Immer die Hilfe zu Befehlen durchlesen (sofern man die Befehle nicht kennt) :)

    Du brauchst also kein externes Tool. (Das würde ich sonst auch zu dem Vorschlag dranschreiben.)
    Du brauchst nur die beiden Befehle, ein Passwort und suchst dir einen Algorithmus aus, das ist alles.

    Bei dem Beispiel würde der Inhalt der Datei, die ausgelesen wird in $bEncrypted stehen. Mit encrypt werden die Daten verschlüsselt.

    Wenn du dir das Beispiel ansiehst wirst dus schnell verstehen :)

    MfG Kanashius

  • Danke für die Hilfe

    jetzt hab ich das passwort in der ini datei aber verschlüsselt

    KeePass_Starten

    Passwort setzen