Einzelnen Beitrag anzeigen

JayRZay

Registriert seit: 4. Mär 2007
23 Beiträge
 
Delphi 7 Personal
 
#1

HKEY_CURRENT_USER zur Speicherung von Daten verwenden?

  Alt 26. Mär 2007, 17:41
Hi mal wieder. Ich habe wieder eine Frage und muss dazu (tut mir Leid, aber danke an alle, die die Geduld haben, den ganzen Mist zu lesen) etwas weiter ausholen.

Ich möchte für mein Programm gerne Lizenzen vergeben. Das ganze funktioniert über einen Anforderungscode, und so weiter, und das klappt auch soweit.

Das Problem ist folgendes: Ich schreibe mein Programm für eine spezielle Abteilung einer größeren Einrichtung kostenlos. Ich wollte per Anforderungscode verhindern, dass sich jemand in der EDV-Abteilung der Einrichtung sagt "Naja, für kostenlos könnten wir ja auch alle das Programm verwenden, nicht nur diese eine Abteilung". Deswegen besteht mein Anforderungscode aus verschlüsselten Daten zum Windowsbesitzer und dessen Organisation. Das dumme ist, wie ich heute gemerkt habe, dass die ganze Einrichtung vermutlich dieselben Windows-Registrierungs-Daten hat.

Was sich unterscheidet, und womit ich meine Abteilung eindeutig identifizieren könnte, sind also nicht die Windows-Besitzer, sondern nur die angemeldeten User. Natürlich kann man das ohne große intellektuelle Anstrengung umgehen aber es wäre in der praktischen Durchführung für die Einrichtung so aufwändig, dass sie wohl eher die Lizenzen legal erwerben würden.

Zur Zeit ist das System folgendes. Der korrekte Freischalt-Code wird bei jedem Start vom Programm intern generiert. Dann wird er abgeglichen mit dem Code, den der User eingegeben hat. Dieser liegt in der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\... . Wenns übereinstimmt, startet er ohne zu meckern weiter, wenn nicht bricht er ab und bittet um den richtigen Code.

Jetzt kommt der Kern der Frage:

Wenn ich jetzt statt den Windows-Besitzer-Daten, die ja überall auf dem Rechner gleich sein sollten, die aktuellen User-Daten (vom angemeldeten Benutzer) für den Code nehmen möchte, kann ich meine Daten ja nicht einfach im Ordner HKEY_LOCAL_MACHINE speichern, weil ich dann nur pro PC einem Windows-Account erlauben könnte, mein Programm zu nutzen (weil halt jeder, der sich mit einem anderen Namen anmeldet, einen anderen Code braucht).

Also müsste ich für jeden User, der grade angemeldet ist, eine eigene Adresse in der Registry hinterlegen, in der er seinen Code eingeben kann. So dass das Programm z.B. beim Benutzer "Karl" einen anderen Code sucht, als wenn "Peter" sich anmeldet.

Wie mache ich das am besten?

a) Kann ich dafür immer denselben Ordner verwenden, wenn ich statt HKEY_LOCAL_MACHINE eher HKEY_CURRENT_USER verwendet? Mein Verständnis von ...CURRENT_USER ist, dass

...CURRENT_USER\MeinProgramm\Codewort

quasi bedeutet, wenn Peter angemeldet ist:

PetersVerzeichnis\MeinProgramm\Codewort

und wenn Karl angemeldet ist

KarlsVerzeichnis\MeinProgramm\Codewort

Also dass ...CURRENT_USER immer den Registry-Zweig enthält, der dem aktuellen User gehört und jeder User könnte in ...CURRENT_USER Daten gespeichtert haben, die nur gelesen werden, wenn ER eingeloggt ist

oder

b) Dass ich "Peter" und "Karl" als Usernamen einlese und als Strings verwende, um auf HKEY_LOCAL_MACHINE Unterverzeichnisse zu erstellen, Marke:

...LOCAL_MACHINE\MeinProgramm\(aktueller Username)\Codewort , um zu erreichen, dass z.B. Peter seine Daten unter:

...LOCAL_MACHINE\MeinProgramm\Peter\Codewort

findet, wenn er auf Windows angemeldet ist.

Oder sind beide Möglichkeiten schlecht, ich habe was falsch verstanden, ich habe was übersehen oder so, und es gibt was viel besseres?

Nochmal, sorry, sorry, sorry für die lange Erklärung. Ich habs dreimal gelesen, ich kriegs nicht kürzer erklärt. Ich hoffe, man kanns halbwegs verstehen, worums mir geht und was ich mir so denke.

Ich danke wieder herzlich für jeden Hinweis!

Jay
  Mit Zitat antworten Zitat