Wie mache ich es das eine bestimmte Datei nur einmal benutzt werden kann?

6 Antworten

am besten machst du dir dann einen launcher streamst dann als dll das eigendliche programm darein (nach einem login oder so ) und lädst die dll dann in dein programm und fürst diese aus (in falle von einer anwendung )

Woher ich das weiß:Hobby – Programmiere seid 6 Jahren Modifikationen für Spiele

Palladin007 hat ja bereits einen guten Ansatz gegeben, um das kleinere Problem, deine Frage zu lösen.

Mich selber würde mehr das dahinter interessieren, denn auf den ersten Blick würde ich sagen, dass du ein Architekturproblem hast, die überhaupt zu dieser Frage führt.

Was ist das für eine Applikation, die einen täglichen Schlüssel braucht und wie löst du das im Gesamtkonzept? Eventuell gibt es da viel einfachere/galantere Ideen ;)

Gar nicht, geht nicht.

Du kannst ein Programm schreiben, dass die Datei nach dem Öffnen verändern oder löscht, aber der Nutzer kann die Datei auch einfach vorher kopieren und hat deinen "Schutz" damit umgangen.

Woher ich das weiß:Berufserfahrung

Slighting 
Beitragsersteller
 05.06.2022, 15:31

Die Datei ist schon geschützt. Mir geht es darum:

Wenn ich auf einen Button drücke lädt c# eine Datei herunter, und öffnet sie. Mein Problem ist das man die Datei einfach abspeichern kann und so das Key System umgehen kann. Das heißt aus einem Day Key, wird ein Lifetime Key.

0
Palladin007  05.06.2022, 16:22
@Slighting

Das Programm lädt also eine Datei, öffnet sie und Du möchtest verhindern, dass sie nicht nochmal (also manuell vom Benutzer) geöffnet werden kann?

Dann speichere sie nicht als Datei ;)

In .NET werden in so Situationen immer Streams verwendet, beim Download bekommst Du auch einen Stream. Den Stream kannst Du live lesen und mit den Daten irgendetwas tun, allerdings nur einmal, oder Du kopierst sie in einen MemoryStream und machst damit dann was auch immer Du willst.
Du speicherst den Stream vermutlich in eine Datei (= Du kopierst ihn in einen FileStream) und liest diese Datei (den FileStream) danach wieder - was unnötig ist, besonders wenn Du gar keine Datei brauchst oder haben willst.

Aber lies dich vorher in das Stream-Konzept ein, das unterscheidet sich deutlich von dem, was Du vielleicht schon kennst und falsch genutzt, bekommst Du nur massig Probleme.

0
pcjobnet  12.07.2022, 06:41
@Palladin007

Die Idee des Streams finde ich gut und mit den neuen Frameworkversionen ist die Behandlung eines Streams anstelle eines Downloads auf die Festplatte nicht mehr so unterschiedlich und gut zu handeln - ausser, dass bei jedem Programmstart die Datei neu geladen werden muss...

0

Und was mir gerade noch in den Sinn gekommen ist... Du kannst die Datei zwar nicht selber zerstören, aber deren Inhalt mit einem Zeitstempel versehen und die Datei verschlüsseln.

Sprich in deiner Datei ist neben der restlichen Information auch noch ein "GiltBis" Zeitstempel und der wird dann verglichen mit der Computerzeit des Anwenders. Ist die Datei abgelaufen kommt eine entsprechende Meldung. Wichtig ist dabei die Verschlüsselung, sonst kann man die Datei einfach ändern. Und falls du verhindern willst, dass der Anwender durch Rücksetzen der Computerzeit das Programm aushebelt, liest du einfach die Zeit von einem entsprechenden Dienst im Internet.

Und mit was soll sie geöffnet werden? Mit Word oder im Texteditor oder mit einem Bildprogramm? Daran scheitert es doch schon. Du wirst keine Kontrolle haben darüber, mit welchem Programm einer deine Datei öffnet.