Seriennummer abfrage mit Registry???
-
Nachrichtentext
Hallo zusammen!
Ich bin's Programmer. Hatte schon seit läääängerer zeit gepostet wie man einen Freischaltcode für das eigene Programm in einer Registry speichert und dann abfragt. Mit der Registry auch prüfen ob schlüssel richtig oder nicht.Ebenfalls wenn 1.mal seriennummer richtig eignegebn wurde, sollte ein eintrag in die registry gemacht werden. Ist beim 2ten Start diese Nummer in der registry vorhanden, sollte keine Abfrage mehr kommen.
WIE!!!! geht das nochmals und wie mach ich das?? SORRY; BIN LAIE UND!
Habe gegoogelt, war im www.programmierer-board.de Forum habe dort und HIER auch gesucht aber NIX gefunden!
W
Ein Schweizer wäre für Eure Hilfe dankbar.
mfg
ProgrammerBeitrag mit dem Titel "Titel" bitte löschen!! und hier antworten, dangge!

-
Doppelpost: Habs übersehen.
Meine Antwort:Hi
bei deinem Programmstart (in InitInstance) öffnest du die Registry mit RegOpenKeyEx und liest den (besser versteckten) Registryschlüssel mit RegQueryValue ein. Wenn er existiert und mit deinem Freischaltecode übereinstimmt, kannst du ganz normal weitermachen. Wenn nicht, öffnest du ein Fenster in dem der User den Freischaltecode eingeben muss: stimmt der eingegebene Freischaltecode, speicherst du diesen mit RegSetValueEx in der Registry und der user darf weiterarbeiten, stimmt er nicht, wird das Programm beendet).
Wie du die einzelne Funktionen verwendest, findest du im FAQ, in der MSDN und bei GOOGLE ziemlich leicht.Ich darf dich aber darauf hinweisen, dass diese Methode ziemlich leicht zu umgehen ist (kann jeder Scriptkiddy).
Grüße Rapha
Grüße Rapha
-
Danke für die schnelle Antwort.
Ja, das ist eigentlich logisch...

Hab es mir in der FAQ angeschaut und ausgedruckt. Bei Key.QueryValue also beim lesen des StringWertes jetzt zb "102-A3545-BC2394", mit welchem! parameter muss da verglichen werden?`
Ich denke mal es reicht wenn ich
CRegKey key; char buffer[256]; DWORD dwCount = sizeoff( buffer); key.Open( HKEY_CURRENT_USER, "SOFTWARE\TEST", KEY_READ); key.QueryValue( buffer, "102-A3545-BC2394", &dwCount); key.close(); if(key == '102-A3545-BC2394') { //hier wenn Registryeintrag vorhanden und mir der nummer übereinstimmt } else { //und wenn nicht... }Ich denke so würde es gehen, das ich nur mit KEY überprüfe?? Oder anders: wie überprüfe ich am einfachsten ob der eintrag 102-A3545-BC2394 unter SOFTWARE\TEST schon besteht oder nicht??

2. Stimmt mein Code oben? Kann das funzen??
mfg
Pro
-
Rapha schrieb:
Ich darf dich aber darauf hinweisen, dass diese Methode ziemlich leicht zu umgehen ist (kann jeder Scriptkiddy).
Grüße Rapha
hmm... welche Methode wäre dann besser?? einfach ne unbekannte DLL in systemordner ablegen??? zb: kernel_pgNOname.dll oder so? *lol*
-
Also ich hab das so ähnlich gelößt: Ich hab einfach eine dll mit irgendeinem Namen im System32 Ordner erstellt. Da fällt es nicht auf. Diese Datei war aber eine einfache Textdatei, in welche ich dann die Anzahl der verbleibenden Starts, registriert oder nicht usw. abgefragt habe. Als zusätzliche Sicherheit waren die Strings verschlüsselt. Man könnte aber auch einfach die geanze Datei verschlüüseln, dann merkt man beim normalen Öffnen der Datei nicht einmal, dass es eigentlich eine Textdatei ist.
-
@Kani:
Halte ich heutzutage schon für einen "Unzulässigen Eingriff", zumal der User dann Admin-Rechte benötigt, um das Teil zu installieren.
-
Hi
Auch diese Methode ist nicht wirklich sicher.
Es gibt tausende von Tools, die mitprotokollieren, was bestimmte Programme tun.Grüße Rapha