Ich habe ein ähnliches Problem. Ein Reportgenerator kursiert beim Kunden, soll aber eigentlich pro Arbeitsplatz bezahlt werden.
Nun könnte ich die verklagen, aber ich bin ja nicht blöd. Also habe ich einen kleinen Lizenzserver geschrieben (Alpha-Stadium)
Im Server der Admin neue Lizenzen freischalten, die bekommt er von uns (einfache Text-Dateien). Dazu klickt er einfach im 'License Server Manager' auf 'Add Licences' und wählt die Datei(en) aus. Die gleiche Lizenz- (Text)Datei wird dem Endanwender (dem Client) mitgegeben. Dort steht im Klartext (
XML) die Software, Version, Lizenz-ID sowie ein Hash drin. Der Hash verhindert, das man die Lizenz-Info einfach überschreiben kann.
Beim Start schickt die Anwendung eine ID (mit
IP, PC-Namen etc.) zum Server und der prüft nun, ob die ID überhaupt (noch) gültig ist etc.
Dann wird die Kombination ID, Datum,
IP, PC-Name in einer Liste im Server geloggt.
Nach einiger Zeit können wir nachschauen, wann welcher PC mit welcher ID die Software eingesetzt hat. Wenn es viele sind, und das vielleicht auch noch gleichzeitig, dann kann ich meinen Kunden dezent darauf hinweisen, das da irgendwas mit kursierenden Lizenzen nicht in Ordnung ist.
Der Kunde/Anwender bekommt davon gar nichts mit und eventuelle zusätzliche Lizenzen sprechen wir direkt mit dem Admin bzw. dem Abteilungsleiter ab (nach dem Motto: "Also, wir haben da ein lizenztechnisches Problem, das müssten wir mal lösen"). Alle bewahren ihr Gesicht und wir kommen trotzdem zu unserem Geld.
Über den gleichen Lizenzserver werden übrigens auch Softwareupdates eingespielt. Wenn die Version im Client updateberechtigt ist, dann saugt es über den gleichen Kanal ein Upgrade, installiert es auf dem Client und startet neu.
Na ja, ist alles im Alpha-Stadium, klappt aber im Test.
Vielleicht wäre das ja was. Ich muss mal kramen, ob ich das nochmal zum laufen bekomme.
Ach so: Läuft mit Port 212 (Borland socket server), über den auch der Reportgenerator seinen Verkehr abwickelt.