Vom User festgelegtes Passwort in INI Datei speichern und beim Öffnen abfragen

  • Hallo Leute

    Ich möchte das der User beim ersten öffnen des Programms sein Passwort festlegt. Dieses wird irgendwo (zb. ini datei) gespeichert und bei jedem Programmstart abgefragt. Das Programm sucht das Passwort also in der Ini Datei.


    Ich hatte selber ein Script aber da bekomm ich das mit dem checken, ob das Passwort richtig ist nicht hin...

    Spoiler anzeigen

    2 Mal editiert, zuletzt von iFreak95 (3. Oktober 2011 um 19:13)

  • Danke erstmal für deine Hilfe!

    Was meinst du mit iniRead? Ich weis nicht genau wie ich dss machen soll, dass wenn der User ein Passwort eingibt, das Programm prüft ob es richtig ist. (Häufig "das", ich weis :D )

  • und dazu evtl. noch crypt damit man das pw nicht im Kalrtext in der ini hat

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Sorry falls ich nerv, aber ich brauch das Script.

    Hier nochmal der Code mit dem IniRead, das klappt nicht was habe ich falsch gemacht?!

  • hallo iFreak95,

    bei mir geht das so!

    [autoit]


    #include <File.au3>
    #include <String.au3>

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

    abfrage()
    Exit
    Func abfrage()
    $pass = InputBox ("Save Password BETA 1", "Bitte trage hier dein Passwort ein!","","*",250,130)
    If IniRead (@ScriptDir &"\passwort.ini","Passwort","key01","") = $pass Then
    SoundPlay("C:\Program Files\MBDevelopment\Save Password\Media\start.mp3")
    MsgBox(0,"Save Password", "Sie haben sich erfolgreich als " & @UserName & " eingeloggt!")
    SoundPlay("C:\Program Files\MBDevelopment\Save Password\Media\standart.mp3")
    Else
    $msgbox=MsgBox (1,"Save Password BETA 1" , "Falsche Antwort!" & @CRLF & "Nochmal versuchen?")
    If $msgbox=2 Then
    Exit
    EndIf
    EndIf
    EndFunc

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

    in der ini steht folgendes!

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

    [Passwort]
    Key01="hallo"

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

    gruß gmmg

  • Danke erstmal!

    Ich bekomme Folgende Fehlermeldung

    Spoiler anzeigen
    Code
    C:\Program Files (x86)\AutoIt3\Include\File.au3(47,1) : ERROR: syntax error
    Func
    ^
    C:\Users\BENUTZERNAME\Desktop\passwort save beta\test.au3(2,14) : ERROR: check(): undefined function.
    	Call("abfrage")
    	~~~~~~~~~~~~^
    C:\Users\BENUTZERNAME\Desktop\passwort save beta\test.au3 - 2 error(s), 0 warning(s)
  • Sorry, hier ist er.

    Spoiler anzeigen
  • Benutze doch bitte die AutoIt Tags damit der Quelltext bunt wird, ist so besser lesbar

    Und nen bissel Ordnung schadet auch nix :)

    [autoit]

    #RequireAdmin
    #include <File.au3>
    #include <String.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WindowsConstants.au3>

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

    $f_prog_dir = "C:\Program Files\MBDevelopment\Save Password\" ;ggf. mittels regread den Pfad ermitteln, es muss ja nicht überall so passen

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

    If FileExists($f_prog_dir & "User\passwort.ini") then
    Call("check")
    Else
    Call("createpw")
    EndIf

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

    ;~ check() ;wird das noch benötigt?

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

    Exit

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

    ;~ #Funktionen--------------------------------------------------

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

    Func createpw()
    $Form1 = GUICreate("Form1", 280, 83, 192, 124)
    $Input1 = GUICtrlCreateInput("Input1", 8, 8, 257, 21)
    $Button1 = GUICtrlCreateButton("Button1", 8, 48, 257, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Input1Read = GUICtrlRead( $Input1 )
    If $Input1Read="" Then
    MsgBox(0,"Save Password","Kein Passwort eingetragen!")
    Else
    Global $Save_Ort = FileSaveDialog( "Benutzerdaten speichern", $f_prog_dir & "User\", "Alle Dateien (*.*)", 0, "passwort.ini")
    FileClose( $Save_Ort )
    IniWrite( $Save_Ort,$Input1Read ,"" , $Input1Read)
    GUISetState(@SW_hide)
    Call("check")
    EndIf

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

    EndSwitch
    WEnd
    EndFunc

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

    Func check()
    $pass = InputBox ("Save Password BETA 1", "Bitte trage hier dein Passwort ein!","","*",250,130)
    If IniRead (@ScriptDir &"\passwort.ini","Passwort","key01","") = $pass Then
    SoundPlay($f_prog_dir & "start.mp3")
    MsgBox(0,"Save Password", "Sie haben sich erfolgreich als " & @UserName & " eingeloggt!")
    SoundPlay($f_prog_dir & "Media\standart.mp3")
    Else
    $msgbox=MsgBox (1,"Save Password BETA 1" , "Falsche Antwort!" & @CRLF & "Nochmal versuchen?")
    If $msgbox=2 Then
    Exit
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • hallo,

    da sind noch einige schönheitsfehler drin!
    wenn du den filesave dialog benutzt, musst du sicherstellen, das der feste pfad zur ini dann auch eingehalten wird.
    d.h. du musst den pfad zur inidatei zur gleichen zeit in die registry oder eine andere datei schreiben und dann beim starten des programms diesen auslesen, um die ini zu prüfen.

    [autoit]


    #RequireAdmin
    #include <File.au3>
    #include <String.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WindowsConstants.au3>

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

    $f_prog_dir = "d:\" ;ggf. mittels regread den Pfad ermitteln, es muss ja nicht überall so passen

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

    If FileExists($f_prog_dir & "\passwort.ini") then
    check()
    Else
    createpw()
    EndIf

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

    ;~ check() ;wird das noch benötigt?

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

    Exit

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

    ;~ #Funktionen--------------------------------------------------

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

    Func createpw()
    $Form1 = GUICreate("Create Passwort", 280, 83, 192, 124)
    $Input1 = GUICtrlCreateInput("", 8, 8, 257, 21)
    $Button1 = GUICtrlCreateButton("Speichern", 8, 48, 257, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $Input1Read = GUICtrlRead( $Input1 )
    If $Input1Read="" Then
    MsgBox(0,"Save Password","Kein Passwort eingetragen!")
    Else
    Global $Save_Ort = FileSaveDialog( "Benutzerdaten speichern", $f_prog_dir , "Alle Dateien (*.*)", 0, "passwort.ini")
    FileClose( $Save_Ort )
    IniWrite( $Save_Ort, "Passwort" ,"key01" , $Input1Read)
    GUISetState(@SW_hide)
    check()
    EndIf

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

    EndSwitch
    WEnd
    EndFunc

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

    Func check()
    $pass = InputBox ("Prüfe Password BETA 1", "Bitte trage hier dein Passwort ein!","","*",250,130)
    If IniRead ($f_prog_dir & "\passwort.ini","Passwort","key01","") = $pass Then
    SoundPlay($f_prog_dir & "start.mp3")
    MsgBox(0,"Save Password", "Sie haben sich erfolgreich als " & @UserName & " eingeloggt!")
    SoundPlay($f_prog_dir & "Media\standart.mp3")
    Else
    $msgbox=MsgBox (1,"Save Password BETA 1" , "Falsche Antwort!" & @CRLF & "Nochmal versuchen?")
    If $msgbox=2 Then
    Exit
    EndIf
    EndIf
    EndFunc

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

    achtung, ich habe die pfade für mich angepasst!

    gruß gmmg ;)

    Einmal editiert, zuletzt von gmmg (30. September 2011 um 15:29)

  • Zuerst einmal möchte ich mich ganz herzlich bei dir bedanken !!!! :thumbup:
    Das hätte ich nicht hinbekommen

    Allerdings startet das Programm nur, wenn die passwort.ini schoin vorhanden ist. Andernfalls stürtz es direkt ab...

    Einmal editiert, zuletzt von iFreak95 (30. September 2011 um 15:03)

  • also bei mir kommt, wenn die ini nicht da ist, die abfrage "Create Passwort"!
    hast du alle pfade geprüft?
    benutzt du scite als editor? da hast du doch die output option (taste F 8 ), in der dir die fehler angezeigt werden!

    vielleicht solltest du das ganze mal direkt ohne filesave dialog speicher!

    [autoit]


    ;Global $Save_Ort = FileSaveDialog( "Benutzerdaten speichern", $f_prog_dir , "Alle Dateien (*.*)", 0, "passwort.ini")
    ;FileClose( $Save_Ort )
    IniWrite($f_prog_dir & "\passwort.ini", "Passwort" ,"key01" , $Input1Read)
    GUISetState(@SW_hide)
    MsgBox(0,"","Passwort.ini wurde erstellt")
    check()

    [/autoit]

    gruß gmmg

  • Hi,
    auf jeden Fall noch das Passwort verschlüsseln.

    Spoiler anzeigen
    [autoit]


    #RequireAdmin
    Global $iniPW = @ScriptDir & "\passwort.ini"
    Global $Media = @ScriptDir & "\Media"

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

    If FileExists($iniPW) Then
    check()
    Else
    createpw()
    EndIf

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

    Exit

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

    Func createpw()
    $Form1 = GUICreate("Passwort erstellen", 280, 100)
    $Input1 = GUICtrlCreateInput("Passwort hier eingeben !", 10, 10, 260, 17)
    $Input2 = GUICtrlCreateInput("Passwort wiederholen !", 10, 40, 260, 17)
    $Button1 = GUICtrlCreateButton("Passwort speichern", 10, 68, 260, 22)
    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $Button1
    $Input1Read = GUICtrlRead($Input1)
    $Input2Read = GUICtrlRead($Input2)
    If $Input1Read <> $Input2Read Or $Input1Read = "" And $Input1Read = "" Then
    MsgBox(0, "Save Password", "Bitte Passwort prüfen !")
    Else
    IniWrite($iniPW, "Passwort", "Key", $Input1Read)
    GUISetState(@SW_HIDE)
    check()
    EndIf
    EndSwitch
    WEnd
    EndFunc ;==>createpw

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

    Func check()
    $pass = InputBox("Save Password BETA 1", "Bitte trage hier dein Passwort ein!", "", "*", 250, 130)
    If IniRead($iniPW, "Passwort", "Key", "") = $pass Then
    SoundPlay($Media & "\start.mp3")
    MsgBox(0, "Save Password", "Sie haben sich erfolgreich als " & @UserName & " eingeloggt !" & @TAB)
    SoundPlay($Media & "\standart.mp3")
    Else
    $msgbox = MsgBox(0, "Save Password BETA 1", "Falsche Antwort!")
    Exit
    EndIf
    EndFunc ;==>check

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

    ; Ende

    [/autoit]