Certutil Passwort und Dateipfad

  • Mahlzeit,


    habe ein Problem mit einem Skript und zwar möchte ich per certutil ein Zertifikat importieren.

    Hierzu ist eine Passwortabfrage und die Pfadangabe der Datei nötig.

    Das Skript was ich dazu gebastelt habe sieht so aus, funktioniert jedoch nicht wie erwartet:

    [autoit]


    $bLoop = 1
    $search = FileFindFirstFile("*.p12")
    FileClose($search)
    While $bLoop = 1
    $text = InputBox("Certimport", "Bitte das Password aus dem Textfile eingeben")
    If $text <> "passwort" Then
    MsgBox(4096, "Error", "Falsches Password eingegeben - Bitte erneut versuchen!")
    Else
    Run(@Comspec & ' /k certutil -p & $text -importpfx & $search ', @SW_HIDE)
    $bLoop = 0 ; Exit the loop - ExitLoop would have been an alternative too :)
    EndIf
    WEnd
    ; Print the success message
    MsgBox(4096,"Certimport", "Zertifikat erfolgreich importiert.")
    ; Finished!

    [/autoit]

    jemand eine Idee?

    Danke & Gruß

  • hallo erax,

    ich kenne certutil nicht. aber aus meiner sicht ist die zeile hier falsch
    Run(@Comspec & ' /k certutil -p & $text -importpfx & $search ', @SW_HIDE)

    die zeile müsste imho eher so aussehen:
    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & $search, @SW_HIDE)

    vielleicht müsste man auch das stdout und stderr wegfangen (siehe hilfe bei StdoutRead ...)

    mfg
    vgun

  • [autoit]

    #include <Constants.au3>
    $bLoop = 1
    $search = FileFindFirstFile("*.p12")
    FileClose($search)
    While $bLoop = 1
    $text = InputBox("Certimport", "Bitte das Password aus dem Textfile eingeben")
    If $text <> "passwort" Then
    MsgBox(4096, "Error", "Falsches Password eingegeben - Bitte erneut versuchen!")
    Else
    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & $search, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $bLoop = 0 ; Exit the loop - ExitLoop would have been an alternative too :)
    EndIf
    WEnd
    ; Print the success message
    MsgBox(4096,"Certimport", "Zertifikat erfolgreich importiert.")
    ; Finished!

    [/autoit]


    selbe effekt.


    keine fehlermeldung, aber auch kein import ;(

  • Nur so nebenbei:

    [autoit]

    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & $search, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    Sollte das nicht

    [autoit]

    Run(@Comspec & ' /k certutil -p ' & $text & ' -importpfx ' & $search, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]


    also mit einem leerzeichen nach dem -p ?
    sonst ergibt das ja "-ppasswort"

    Oder lieg ich da falsch?

  • jap, haste recht, ändert aber leider auch nichts.

    ist der filesearch denn überhaupt richtig?

    Einmal editiert, zuletzt von erax (27. Oktober 2009 um 14:32)

  • [autoit]

    #include <Constants.au3>
    $bLoop = 1
    $search = FileFindFirstFile("*.p12")
    $searchname = FileFindNextFile($search)
    While $bLoop = 1
    $text = InputBox("Certimport", "Bitte das Password aus dem Textfile eingeben")
    If $text <> "passwort" Then
    MsgBox(4096, "Error", "Falsches Password eingegeben - Bitte erneut versuchen!")
    Else
    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $bLoop = 0 ; Exit the loop - ExitLoop would have been an alternative too :)
    EndIf
    WEnd
    ; Print the success message
    MsgBox(4096,"Certimport", "Zertifikat erfolgreich importiert.")
    ; Finished!
    FileClose($search)

    [/autoit]

    Probier mal so. Ich kann nur raten denn ich hab mit FileFindFirstFile & co noch nie gearbeitet.

  • okay, wenn ich das cmd fenster offen lasse erhalte ich nu folgende meldung:

    CertUtil: -importPFX-Befehl ist fehlgeschlagen: 0x80070002 (WIN32: 2)
    CertUtil: Das System kann die angegebene Datei nicht finden.

    heißt, der filesearch funktioniert leider nicht korrekt.
    nuja, wenigstens ein anhaltspunkt

  • Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    $bLoop = 1
    $search = FileFindFirstFile("*.p12")
    If $search = -1 Then
    MsgBox(0,"","keine dateien gefunden")
    Else
    $searchname = FileFindNextFile($search)
    If @error Then
    MsgBox(0,"","Fehler")
    Else

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

    MsgBox(0,"",$search)
    MsgBox(0,"",$searchname)
    While $bLoop = 1
    $text = InputBox("Certimport", "Bitte das Password aus dem Textfile eingeben")
    If $text <> "passwort" Then
    MsgBox(4096, "Error", "Falsches Password eingegeben - Bitte erneut versuchen!")
    Else
    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & @ScriptDir & $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $bLoop = 0 ; Exit the loop - ExitLoop would have been an alternative too :)
    EndIf
    WEnd
    ; Print the success message
    MsgBox(4096,"Certimport", "Zertifikat erfolgreich importiert.")
    ; Finished!
    EndIf
    EndIf
    FileClose($search)

    [/autoit]

    So Vielleicht?

  • hehe, auch nicht :)
    da krieg ich zwei messageboxen mit dem richtigen file
    msgbox 1: 1
    msgbox2: res.p12

    aber ohne import und wieder keine fehlermeldung

    es muss aber def. an den variablen liegen, denn statisch funtzt es

    2 Mal editiert, zuletzt von erax (27. Oktober 2009 um 15:09)

  • letzte Idee die ich hätte

    [autoit]

    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & @ScriptDir & $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    ersetzen duch

    [autoit]

    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & @ScriptDir &"\"& $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    ansonsten bin ich mit meinem Latein am ende...

  • ich versteh es nicht :(

    im batch funktionierts doch auch:

    set pw=passwort
    set file= C:\Users\res\Desktop\res\res.p12
    certutil -p %pw% -importpfx %file%

  • letzte Idee die ich hätte

    [autoit]

    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & @ScriptDir & $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    ersetzen duch

    [autoit]

    Run(@Comspec & ' /k certutil -p' & $text & ' -importpfx ' & @ScriptDir &"\"& $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]

    ansonsten bin ich mit meinem Latein am ende...

    bevor ne negertive rückmeldung kommt: da fehlt wieder das lehrzeichen nach dme "-p" ;)

  • das fehlte schon die ganze zeit ^^

    CertUtil: -importPFX-Befehl ist fehlgeschlagen: 0x80070056 (WIN32: 86)
    CertUtil: Das angegebene Netzwerkkennwort ist falsch.

    die fehlermeldungen kommen aber nur mit dem @SystemDir

  • Recht hast du schnitzel... korrekterweise müsste das script dann so lauten (hoffe ich)

    [autoit]


    #include <Constants.au3>
    $bLoop = 1
    $search = FileFindFirstFile("*.p12")
    If $search = -1 Then
    MsgBox(0,"","keine dateien gefunden")
    Else
    $searchname = FileFindNextFile($search)
    If @error Then
    MsgBox(0,"","Fehler")
    Else

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

    MsgBox(0,"","Dateihandle:"&@CRLF& $search)
    MsgBox(0,"","Gefundener Dateiname: "&@CRLF&$searchname)
    MsgBox(0,"","Komplettes Verzeichnis: "&@CRLF&@CRLF&@ScriptDir&"\"&$searchname)
    While $bLoop = 1
    $text = InputBox("Certimport", "Bitte das Password aus dem Textfile eingeben")
    If $text <> "passwort" Then
    MsgBox(4096, "Error", "Falsches Password eingegeben - Bitte erneut versuchen!")
    Else
    Run(@Comspec & ' /k certutil -p ' & $text & ' -importpfx ' & @ScriptDir &"\"& $searchname, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
    $bLoop = 0 ; Exit the loop - ExitLoop would have been an alternative too :)
    EndIf
    WEnd
    ; Print the success message
    MsgBox(4096,"Certimport", "Zertifikat erfolgreich importiert.")
    ; Finished!
    EndIf
    EndIf
    FileClose($search)

    [/autoit]
  • vielen dank für deine hilfe seubo, nu läufts ;)

    Einmal editiert, zuletzt von erax (27. Oktober 2009 um 15:57)