Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Lizensierung eines Programms auf mehreren Rechnern (https://www.delphipraxis.net/102639-lizensierung-eines-programms-auf-mehreren-rechnern.html)

little_budda 1. Nov 2007 15:47


Lizensierung eines Programms auf mehreren Rechnern
 
Hallo,

ich habe ein Programm geschrieben welches auf einem Rechner installiert wird (Administrator-PC).
Bei Start hat es nur einen Benutzer (Der Admin)
Der Admin kann weitere Benutzer angelegen, welche sich dann am Programm anmelden können.
Die angelegte Benutzerliste bekommen alle Benutzer codiert per USB-Stick.
(Jeder Benutzer hat einen)
Die Benutzerliste muss beim ersten Programmstart importiert werden.

Es können maximal 20 Benutzer angelegt werden.
Bisher gut.

Ich wollte gerne das jeder Benutzer das Programm auf maximal 3 PCs nutzen kann.
Wie kann ich verhindern dass ein Benutzer seine Benutzerliste auf mehr als drei PCs importiert?

Ich wollte die Importdatei patchen nach jedem Import,
aber das ist mit einer simplen Sicherheitskopie der Benutzerliste zu umgehen.

Ich wäre recht dankbar für eine Idee.

:gruebel:

Mr.Yeah 1. Nov 2007 16:53

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Ich sehe nur eine Möglichkeit:
Beim Exportieren der Datei wird sie verschlüsselt und mit einer ID versehen. Schlüssel und ID werden an einen Server geschickt, der sie speichert. Beim Importieren der Datei fragt deine Software beim Server nach dem Schlüssel. Der Server überprüft, wie oft die Datei benutzt wurde. Wenn sie zu oft benutzt wurde, rückt er nichts raus. Dies setzt voraus, dass ein entsprechender Server eingerichtet ist.
Ich habe das dumpfe Gefühl, dass diese Lösung nicht die ist, die du gesucht hast. Leider fällt mir nichts anderes ein.

Poolspieler 1. Nov 2007 17:13

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Nur so eine Idee:
Wie wäre es, wenn Du den Vorschlag mit der ID von Mr.Yeah aufgreifst und in die verschlüsselte Datei die Seriennummer des USB-Sticks schreibst, auf dem die Datei stehen muss - so wäre schon mal ausgeschlossen, dass man Deine Liste per Mail verteilen kann....
Wie und ob man die Seriennummer eines USB-Sticks auslesen kann, weiss ich nicht.

Bleibt immernoch das Problem, dass jemand die Datei vorher kopieren könnte...

Als Alternative fällt mir nur noch ein:
- Dateisystem des USB-Sticks selbst programmieren... ist ja auf einen Nachmittag gemacht ;-))
- kommerzielles Hardwaredongle nutzen - z.B. von Aladin

Gruß und noch viel Erfolg,
Poolspieler

SirThornberry 1. Nov 2007 17:50

Re: Lizensierung eines Programms auf mehreren Rechnern
 
ich würde es so machen.
Du hast einen Admin PC und X Client PCs.
Um auf Client-PC X das Programm nutzen zu können muss man vorher ein Tool ausführen welches einem eine ID ausgibt (welche anhand der Hardware erzeugt wird). Diese ID gibt man dann am Admin-PC ein um eine Benutzerliste zu erzeugen. Die erzeugte Benutzerliste beinhaltet die Hardware-ID von Client-PC X und kann dadurch nur auf diesem Client-PC importiert werden.

Mr.Yeah 1. Nov 2007 17:50

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Zitat:

Zitat von Poolspieler
Wie wäre es, wenn Du den Vorschlag mit der ID von Mr.Yeah aufgreifst und in die verschlüsselte Datei die Seriennummer des USB-Sticks schreibst, auf dem die Datei stehen muss

Daran habe ich auch gedacht, aber
Zitat:

Zitat von Poolspieler
Bleibt immernoch das Problem, dass jemand die Datei vorher kopieren könnte...

Zitat:

Zitat von Poolspieler
kommerzielles Hardwaredongle nutzen

Auch eine gute Idee. Hab nicht daran gedacht.

little_budda 1. Nov 2007 18:11

Re: Lizensierung eines Programms auf mehreren Rechnern
 
danke für die Tipps.

Die Variante von SirThornberry gefällt mir prinzipiell am besten nur verplichte ich den Anwender zum Laufen
(Erst zu seinem PC - Dann zum Admin PC - Dann wieder zu seinem PC) -> Sehe ich als nicht so vorteilhaft an.

Die Variante von Poolspieler mir dem Programmieren des Dateisystems hört sich zwar interessant an,
wird aber meine Fähigkeiten schätzungsweise übersteigen.

Die Idee von Mr.Yeah mit dem Server finde ich am besten, da alle meine Client PC online sind
und ich auch einen Server im Netz habe.
Ich habe nur keine Ahnung wie man so etwas realisiert.
Eine PHP-Seite erstellen welche aus einer Datenbank einen Schlüssel holt kann ich machen.
Nur wie spreche ich die Formularfelder der Seite per Delphi an?

:gruebel:

Mr.Yeah 2. Nov 2007 15:07

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Das Beste für solch eine Aufgabe scheint Delphi für PHP zu sein.
Ich habe aber überhaupt keine Ahnung, da ich mich bisher noch nie mit irgendwelchen Webanwendungen beschäftigt habe.

little_budda 2. Nov 2007 15:27

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Hallo,
ich meinte eigentlich folgendes:

Ich habe mir jetzt eine Seite gebaut die einen beliebigen Wert in eine Datenbank einträgt.
Eine weitere Seite gibt bei Eingabe dieses Wertes drei mal einen Schlüssel und danach immer einen ErrorCode zurück.
Klappt gut.

Ich möchte ja nun diese Aufrufe nicht händisch sondern über Delphi abwickeln.
Nach Möglichkeit ohne eine von beiden Seiten anzuzeigen.
So irgendwie über POST und GET.

Gruß Holger.

Zwixx 2. Nov 2007 15:28

Re: Lizensierung eines Programms auf mehreren Rechnern
 
also ich würde zur übergabe an die Webseite die Indy-Komponenten nutzen. Diese sind recht einfach nutzbar. Kleines Beispiel:
Delphi-Quellcode:
user : TStringList;  
...
user := TStringlist.create;
user.Clear;
user.Add('TEXT=blablabla');
http := IdHTTP.Post('http://url.to/server/index.php', user);
das ist jetzt einfach nur schematisch... sollte aber ca. so klappen.

Phoenix 2. Nov 2007 15:44

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Hrm. Ganz ehrlich? Ich würde das ganze dann direkt über SOAP machen.

Also kein Webformular, welches dann umständlich per Indy geladen und gefüttert wird, sondern direkt einen Webservice. Hat den Vorteil, das man aus dem WSDL Des Webservices gleich den passenden Delphi-Code generieren lassen kann. Man benutzt den Service dann nur noch, anstelle umständlich Formulare 'Fernbedienen' zu müssen.

little_budda 2. Nov 2007 16:34

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Oh mann, die Idee über SOAP ist genial.
Ich bin gar nicht auf den Gedanken gekommen.
Das hab ich schon mal in Excel (VBA) realisieren müssen.

Danke für den Tipp.

Poolspieler 4. Nov 2007 11:50

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Hallo,
auch wenn es destruktiv erscheint, aber ich persönlich gestatte Programmen nur äußerst ungern den Zugriff auf das Internet.
Man weiß ja nie, was diese Programme dann so alles treiben...
Selbst meine Delphiversion habe ich über die Eingabe eines Schlüssels und nicht über direkten Internetzugriff freigeschaltet.

--> vielleicht sollte man solch einen Mechanismus auch anbieten:
- Auf dem Client wird eine eindeutige ID anhand der Hardware generiert (z.B. Seriennummer von Festplatte und CPU) --> klar, wenn jemand eine neue CPU einbaut, dann wird die Softwarelizenz ungültig... Bei WinXP muss man, glaube ich, 2 oder 3 Teile tauschen, bevor man sich neu registrieren muss.
- Diese ID und eine Seriennummer Deiner Software wird auf einer Internetseite eingegeben
- Dort wird in der Datenbank ermittelt, ob noch genug Lizenzen für diese Seriennummer frei sind.
- Wenn ja, dann wird ein Schlüssel zurück gegeben, mit dem das Programm auf dem Client installiert werden kann
- Wenn der User eine Mailadresse (freiwillig) angegeben hat, dann könnte er den Lizenzschlüssel vielleicht auch per Mail erhalten...
- Andere Firmen machen sowas über Lizenzdateien, die man eben von solchen Seiten nach eingabe eines Schlüssels bekommen kann. Diese Lizenzdateien müssen dann z.B. ins Programmverzeichnis kopiert werden. Oder man schafft eine Möglichkeit diese Lizenzdateien zu importieren. Vorteil einer Lizenzdatei wäre, dass man gleich den Namen des Lizenznehmers darin speichern könnte, der dann beim Programmstart evtl. angezeigt wird.

--> Nachteil ist natürlich, dass der User händisch Zahlencodes eingeben muss. Dafür hat er aber ein gutes Gefühl dabei und muss nicht unkontrollierbare Interzugriffe erlauben...

Ich wollte dies nur mal zur Diskussion stellen :wink:

Beste Grüße,
Poolspieler

little_budda 4. Nov 2007 16:59

Re: Lizensierung eines Programms auf mehreren Rechnern
 
Hallo,

danke für die Anregung.

Ich habe als Alternative für den Fall das ich keinen gültigen I-Net-Connect finde,
nun noch die Möglichkeit eingebaut sich den FreischaltCode auch per E-Mail zu holen.

Gruß Holger.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz