Autor Beitrag
Strike Eagle
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.04.08 13:50 
Hallo.

Wie erstellt man eine Demoversion, also ein Programm, das zB 30 Tage lang läuft?
Habe schon gegoogelt, aber ausser Angeboten für irgendwelche Programme in Demoversionen oder sonstigem nicht brauchbaren fand ich nichts wirkliches. :(

Ich hätte zwar einen Ansatz es selbst, im Programm, zu tun, aber ich wollte mal fragen ob es da irgendwas gibt, das das tut, evtl mit in den Installer (VS 2005 Projekt) integrierbar.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 08.04.08 14:24 
Hallo!

Ich habe das selber noch nie gemacht, aber es kann ja eigentlich nur darauf hinauslaufen, dass Du irgendwo den ersten Start des Programmes speicherst und schaust, ob das mehr als 30 Tage her ist. Ich würde eventuell auch noch speichern, wann das Programm zuletzt gestartet wurde und wenn das komischerweise in der Zukunft liegt, hat der Benutzer am Systemdatum gedreht.

100%ig ist der Schutz mit Sicherheit nicht. Vor allem musst Du aber einen Suche bei Google "OBFUSCATOR" über Dein Programm laufen lassen, damit man nicht (so einfach) auslesen kann, wo die Information gespeichert wurde.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Strike Eagle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.04.08 17:56 
Hallo Christian,

danke für die Antwort. Hat in etwa das bestätigt, was ich mir selbst schon dachte und wohl am praktikabelsten ist.

Nicht nur das mit dem 1. Start, sopndern auch das aktuelle Systemdatum wäre ganz interessant, denn da sollte man egtl jedes Mal beim Start mitprotokollieren, ob die 30 Tage schon herum sind und in der Registry den Wert höher setzen.

Ich würden den Aufwand mal auf ca. 5h schätzen, oder wie siehst Du das?

Die Methoden dafür sind ja schon da, mit
SaveSetting()
GetSetting()

Ob das mit dem Obfuscater nötig wird, mal sehen, soll ja kein Fort Knox werden. :D
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 08.04.08 18:15 
user profile iconStrike Eagle hat folgendes geschrieben:
Ich würden den Aufwand mal auf ca. 5h schätzen, oder wie siehst Du das?

Hört sich eigentlich fast zu viel an. Aber ich kann sowas immer schlecht schätzen ;-)

user profile iconStrike Eagle hat folgendes geschrieben:
Die Methoden dafür sind ja schon da, mit
SaveSetting()
GetSetting()
Wo hat's die denn? :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Strike Eagle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 08.04.08 18:36 
Gefunden hab ich sie hier und für C# mit
Interaction.SaveSetting(AppName, Section, Key, Setting) und returnValue = Interaction.GetSetting(AppName, Section, Key, Default) in der Hilfe. :)

5h dürften bei DEM :puke:-Programm ganz passabel sein, ist ein riesiger Haufen dampfendes C# gepaart mit Java. :D :shock:
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Di 08.04.08 18:38 
Hab mir grad folgendes überlegt:
Wird das Demoprogramm gestartet, überprüft es, ob eine Lizenzdatei vorliegt. Falls nicht, kontaktiert es deinen Server und fordert einen Key an. Dabei überträgt es eine Computer-ID, d.h. eine ID die sich nur ändert, wenn größere Umbauten am Computer vorgenommen werden. Der Server generiert nun aus dem aktuellen Datum und der Computer-ID einen Schlüssel, signiert diesen und schickt ihn zurück. Außerdem speichert er die Computer-ID in einer Datenbank ab. Das Demoprogramm speichert den erhaltenen Key als Datei ab, sodass ab sofort kein Schlüssel mehr angefordert werden muss.
Auf diese Weise brauchst du dich nun schonmal nicht mehr darum kümmern, die 30-Tage-Info geheim irgendwo zu speichern. Löscht der Benutzer die Lizenzdatei, versucht dein Programm vom Server erneut einen Key anzufordern, was jedoch fehlschlägt, da der Server die Computer-ID bereits in seiner Datenbank hat. Ein Manipulieren der Lizenzdaten ist aufgrund der Signierung nicht möglich. Jetzt musst du noch aufpassen, dass man deine Anwendung nicht crackt, und irgendwie verhindern, dass der Benutzer die Computeruhr manipuliert. Aber das musst du eigentlich sowieso. Wenn der Benutzer allerdings genug an seinem System verändert, sodass sich die Computer-ID ändert, könnte er nen neuen Key bekommen und somit weitere 30 Tage dein Programm benutzen.
Wäre einiges an Arbeit und lohnt sich warscheinlich auch nur bei größeren Projekten. Und nen Server bräuchte man halt.
Strike Eagle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 09.04.08 11:54 
Ja, wäre eine gute Idee und auch professionell, aber für mich vielleicht etwas zu zeitaufwändig.

Die Computer-ID lesen und speichern wäre schon genug. Hab inzwischen auch nicht-VB-Klassen gefunden (falls irgendwer mal beim Suchen hierrauf stößt):
Neuen "Ordner" in der Registry anlegen
Zitat:
RegistryKey registryKey = Registry.LocalMachine.CreateSubKey("Software\\Beispiel")

und dann mit
Zitat:
registryKey.SetValue("muh", "kuh");

den Wert speichern.

Es kann alles so einfach sein. :roll:
Und so bastelt man sich einen Key
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 09.04.08 12:09 
Hallo!

Du solltest nicht in LocalMachine schreiben, denn darauf hat ein Benutzer mit eingeschränkten Rechten (und somit Dein Programm, wird es von ihm gestartet) keinen Zugriff. Benutze lieber den CurrentUser-Zweig.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Strike Eagle Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mi 09.04.08 13:01 
War nur ein Beispiel. Lieber wäre mir dennoch die LocalMachine statt CurrentUser
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 09.04.08 14:09 
user profile iconStrike Eagle hat folgendes geschrieben:
Lieber wäre mir dennoch die LocalMachine statt CurrentUser

Dann muss Dein Programm mit Admin-Rechten laufen, was ich bei Programmen, die keine administrativen Aufgaben ausführen als Makel ansehe.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".