2012-04-02 6 views
4

Ich baue eine kleine Winforms-App mit: ayende rhino licensing. Die Lizenzierung funktioniert einwandfrei, ich kann Lizenzen erstellen und sie nach Belieben verteilen.Winforms-Lizenzierung speziell für die Maschine

Das Problem ist, wie kann ich jede Lizenz auf nur einer Maschine arbeiten lassen? Ich weiß, dass es in Ayendes Projekt eine Klasse namens LicensingService gibt, die, glaube ich, etwas in etwa so macht, wie ich es versuche, aber ich kann es einfach nicht herausfinden. Ich habe ziemlich viel gesucht und konnte keine Tutorials finden außer this one.

Vielleicht hat jemand dies implementiert, oder hat ein paar Tipps, wie ich das erreichen könnte? Ich habe Zugang zu einem Webserver, wenn das hilft.

Jede Hilfe wird sehr geschätzt, wie immer.

Antwort

1
denken kippe

Hängt, wie ärgerlich Sie es für Ihre Benutzer ehrlich machen wollen. Sie können eine HWID implementieren (siehe How to fast get Hardware-ID in C#?, wie man sie erzeugt), die von System zu System einzigartig ist, dann lassen Sie Ihr Programm überprüfen, ob die HWID mit der gefundenen ID zu der Stelle übereinstimmt, an der Sie sie online speichern (normalerweise unter Verwendung einer Datenbank)).

Unnötig zu sagen, dass Ihre Anwendung eine Internetverbindung benötigt, um zu starten, was für Ihre Benutzer ein wenig frustrierend sein könnte.

Oder Sie können die HWID mit der Seriennummer zusammenführen und Ihre Anwendung das gleiche tun, um zu überprüfen, ob sie übereinstimmen, aber das würde leicht durch den durchschnittlichen Cracker geknackt werden.

Am Ende des Tages ist .net nicht das Beste, was die Sicherheit betrifft, da Sie leicht den Quellcode bekommen und die Assemblies modifizieren können, um bestimmte Schutzfunktionen zu patchen. Denken Sie daran, wenn Sie entscheiden, welche Route Sie zum Schutz Ihrer Software verwenden möchten.

+0

Danke für Ihre Antwort, das klingt nach einer guten Idee. Ich werde es versuchen, ich realisiere .net ist nicht das beste für die Sicherheit, aber ich möchte nur verhindern, dass Benutzer in der Lage sind, die App von Maschine zu Maschine zu kopieren und es funktioniert immer noch. Danke noch einmal. – JDx

1

Ich weiß nicht, was genau ist eine Nashornlizenzierung. Um Ihren Bedarf zu decken, gibt es im Allgemeinen zwei Ansätze.

  1. Geben Sie entweder ein zufällig generiertes Kennwort für den Clientcomputer ein, und verwalten Sie einen Pool von Kennwörtern auf dem Server. Jedes Mal, wenn ein Passwort eingegeben wird, um die Anwendung auf einem lokalen Computer zu registrieren, überprüfen Sie, ob es bereits an anderer Stelle registriert wurde, indem Sie sich über das Internet mit Ihrem Server verbinden.

  2. Oder, was wir tun, ist, generieren Sie einen Code für diesen Rechner (vielleicht ein Hash einer eindeutigen Maschinen-ID, sagen Mac-ID) und erhalten Sie den Client an Sie gesendet. Sie würden dann den Code erneut aufrufen und mit some logic zurücksenden. Jetzt, wenn der Kunde diesen Code in seine Maschine eingibt, machen Sie dasselbe: holen Sie die Maschinen-ID, führen Sie das gleiche erneutes Laden mit demselben some logic durch und prüfen Sie, ob es übereinstimmt.

ich an nichts anderes

+0

Vielen Dank für Ihre Antwort. Nummer 1 klingt wie die beste Lösung für diese spezielle App, ich werde es in Kombination mit der Antwort von denieded66 verwenden. – JDx

+1

@JDx Ich denke du hast den Punkt verpasst. Die akzeptierte Antwort von denied 66 ist die gleiche wie meine zweite Option. Wie verwenden Sie beide Optionen 1 und 2, um Ihr Problem anzugehen? – nawfal