Laden...

Shareware in Setupprojekt oder in Ausführerdatei integrieren?

Erstellt von Briefkasten vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.550 Views
Briefkasten Themenstarter:in
446 Beiträge seit 2004
vor 14 Jahren
Shareware in Setupprojekt oder in Ausführerdatei integrieren?

Hallo,

ich hab ein fertiges Programm geschrieben. Nun möchte ich dem "Kunden" die Möglichkeit geben, das Programm vor dem Kauf zu testen.

Die Shareware Version soll der orginal Version des Programmes entsprechen.
Nach 30 Tagen läuft die Shareware Version ab und man soll das Programm nicht mehr starten können.

Ich hätte das so gemacht:

Das Projekt von der Ausführbaren Datei kopiert. Im Programm start, wird ein RegisteryKey erstellt falls dieser noch ncht vorhanden ist in dem das Datum gespeichert wird.

Ist der RegisteryKey vorhanden wird überprüft ob vom gespeichertem Datum 30 Tage schon vergangen sind.Falls nicht wird das Programm gestartet anderfalls wird das Programm beendet.

Allerdings ist das etwas umständlich das Ausführbare Datei Projet zu kopieren nur um die Überprüfung ein zu bauen.

Kann ich diese Überprüfung auf die 30 Tage nicht in mein Setup Projekt integriren und falls ja wie?
Oder gibts noch eine bessere Möglichkeit?

lg

Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp

195 Beiträge seit 2006
vor 14 Jahren

Hallo Briefkasten,

in den Standardprojekten vom VS sind solche Evaluierungen nicht enthalten, jedoch kannst du RegKeys setzen.
Kann allerdings nicht sagen wie es sich bei anderen Installern wie z.B. InstallShield verhält.

Du solltest dir auf jeden Fall eine andere Methode suchen. Diese Sache mit dem RegKey ist sehr unsicher. Was hält den Benutzer davon ab den Key immer wieder zu löschen oder einen eigenen Wert zu geben?

Auch den Vorgang in der Installation mit einzuschließen halte ich für fehl am Platz. Dort kann man auch die Programmdateien ohne Installation kopieren oder zu einfach manipulieren. So dass keine Prüfung mehr vorhanden ist.

Ich habe es so gelöst, dass die Prüfung in meiner Verschlüsselten exe liegt. Dabei hatte ich das Glück, dass meine Verschlüsselungssoftware (.Net Reactor) Funktionen zur Evaluierung mitliefert.

Grüße

Chris

Briefkasten Themenstarter:in
446 Beiträge seit 2004
vor 14 Jahren

Ich möchte das schon über den Installer regeln.

Momentan stelle ich mir das so vor. Ich erstelle einen Custom Dialog. Dieser enthält eine TextBox in den man den SerialKey eingeben kann und zwei Schaltflächen um im Setup vor oder zurück navigieren zu können.

Der Benutzer soll in der Lage sein, das Setup auch ohne Key abschließen zu können. Das ist eben im vorgefertigtem Dialog CustomerInformation nicht möglich. Dort kommt man nur weiter, wenn der Key passt.

Den Serial Key übergebe ich einer Custom Action (C# Dll). Dort werte ich aus, ob der Key gültig ist. Ist der Key ungültig (z.B. weil man keinen eingegeben hat), erstelle ich in der Registery eine Flag.

Beim Programm start wird der Registery Wert geladen. Aus diesem ermittle ich ob das Programm als Shareware oder Vollversion installiert wurde.

Bin ich richtig in der annahme, dass ich das nur über ein Custom Dialog und Custom Action lösen kann?

Hier noch ein Link wie ich das mit den CustomActions und C#dll machenw will http://www.simple-talk.com/dotnet/visual-studio/visual-studio-setup---projects-and-custom-actions/

Allgemeines:
http://openbook.galileocomputing.de/visualbasic_2008/vb2008_08_anwendungen_004.htm

Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp

S
64 Beiträge seit 2008
vor 14 Jahren

Hallo,

also ich würde die Eingabe eines Schlüssels bei der Installation weg lassen. Verwende lieber eine Lizenz-Datei. Ist keine vorhanden oder sind die Informationen ungültig, läuft das ganze im Demo-Modus. Ist es vorhanden werden alle Funktionen frei gegeben. Zusätzliche würde ich die Lizenzinformationen irgendwo an prominenter Stelle einblenden, z. B. wenn dein Programm die Möglichkeit bietet Daten zu drucken, einfach dort den Lizenznehmer mit angeben. Sowas schützt meistens auch recht effektiv gegen die Weitergabe der Lizenz, zumindest im Geschäftsumfeld. Im privaten Umfeld wirst du sowas nie ganz verhindern können.

Ansonsten einfach mal ein paar Links, denn das Thema wurde schon sehr oft angesprochen, wie man sowas realisieren kann:
Aktivierungsmanager selbst programmieren
Aktivierungsschlüssel oder nicht?

Und zu .Net Reactor einfach mal hier lesen Erfahrung mit .NET Reactor?
Der Shareware-Schutz beruht nämlich einzig und allein auf der Verschlüsselung und die ist erschreckend einfach zu entfernen, wenn man sich ein wenig näher damit beschäftigt.

Grüße

Briefkasten Themenstarter:in
446 Beiträge seit 2004
vor 14 Jahren

also ich würde die Eingabe eines Schlüssels bei der Installation weg lassen. Verwende lieber eine Lizenz-Datei. Ist keine vorhanden oder sind die Informationen ungültig, läuft das ganze im Demo-
...
Der Shareware-Schutz beruht nämlich einzig und allein auf der Verschlüsselung und die ist erschreckend einfach zu entfernen, wenn man sich ein wenig näher damit beschäftigt.

Hallo,

danke für den Hinweis, das ist mt deinem Ansatz wesentlich einfacher zu realisieren.

Ich erstelle eine .snk Datei welche meiner Lizenz-Datei entspricht. Ist diese nicht vorhanden, ist das Programm nur 60 Tage nutzbar.

So würd ich das machen. Nur bin ich mir nicht sicher ob das mit der .snk Datei eine gute Idee ist.

Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp

S
64 Beiträge seit 2008
vor 14 Jahren

Hallo

Ich würde eine asymmetrisch verschlüsselte Datei verwenden. Den dazugehörigen öffentlichen Schlüssel legst du mit in deinem Programm ab (als Resource) und mit Hilfe des privaten Schlüssels (Natürlich schön sicher aufbewahren) erzeugst du nun entsprechende Lizenzen. So kann zwar jeder jederzeit die Lizenzdatei auslesen, aber halt keine neue generieren. Wie du die unverschlüsselte Datei aufbaust ist dann dir überlassen z. B. halt Benutzername, Firma, Kaufdatum, ... als XML, Text oder binär.
Und dann wie gesagt, ist sie nicht vorhanden oder ungültig -> Demo, wenn gültig -> alles frei.

Wichtig ist allerdings dann auch, dass du deine Anwendung durch einen guten Obfuscator schickst, damit erschwerst du, dass jemand deinen Programmcode einsehen kann. Dazu auch [FAQ] .net Assembly vor Disassembling schützen (Obfuscator)

Grüße