Gültigkeitszeitraum von Software beschränken

Flipp

Mitglied
Grüße, ich habe eine Frage zum Thema Gültigkeitsbeschränkung.
Ich würde gern eine Software schreiben, die nur einen begrenzten Zeitraum nutzbar ist. Also z.B. bis 6 Monate nach Installation, danach graue ich meine Buttons und Menuitems aus. Mit dem GregorianCalendar kann ich ja die aktuelle Zeit abfragen, also
Java:
public class DateTest {
     public static void main (String [] args)
    {
    GregorianCalendar gc = new GregorianCalender();
    Date date = gc.getTime();
    }
}
Wie kann ich aber die Zeit so abfragen, dass sie beim ersten Öffnen des Programmes abgefragt
und dann dauerhaft gespeichert wird?
 
S

sfewrff

Gast
Um dauerhaft was zu Speichern benötigst du Dateien(z.B .txt) die diese Werte beinhalten werden.
Beim ersten Programmstart wird dann überprüft ob die Daten schon was beinhalten, wenn nicht, dann Speicher Datum. Würde es aber verschlüsseln. Aber sowas is so ne Sache, der User kann die Zeit zurückstellen und und und.
Oder meinst du das es dauerhaft das im Programmcode gespeichert werden soll?
 

Andi_CH

Top Contributor
Na ja - .txt ist vielleicht ein bisschen zu einfach zu umgehen, aber die Software muss das Installationsdatum persistent speichern. Anders geht es nicht.

Persistent kann sein:
- txt Datei (Nachteil schon erwähnt)
- Registry (Auf Windows beschränkt)
- Binäre Datei (z.B. serialisiertes Datumsobjekt)
- u.s.w.

Nur installiere ich nach 6 Monaten einfach die SW neu und dann läuft das wieder.
Also müsste auch die Installationsroutine diverse Tests durchführen um ganz sicher zu sein.
 

Flipp

Mitglied
Hm, ich denke die Registry Variante macht wahrscheinlich am meisten Sinn. Hab grad gesehen, dass es ein Interface namens Registry in der Java lib gibt, damit lässt sich doch bestimmt was anfangen
 
G

Gast2

Gast
Wenn du dich für die Registry Variante entscheidest wird dein Programm nur auf Windows laufen, das solltest du bedenken.
Hier im Forum fliegt irgendwo nen fertiges Programm rum mit dem du in der Registry schreiben kannst, da musste mal die suche benutzen.
 

Guybrush Threepwood

Top Contributor
Wenn du dich für die Registry Variante entscheidest wird dein Programm nur auf Windows laufen, das solltest du bedenken.
Hier im Forum fliegt irgendwo nen fertiges Programm rum mit dem du in der Registry schreiben kannst, da musste mal die suche benutzen.

Also, wenn man "Preferences" verwendet, dann wird unter Windows in die Registry geschrieben, bei anderen Systemen halt irgend etwas anderes gemacht. Die Kompatibilität des Programms ist dadurch nicht beeinträchtigt.
Zur Realisierung: Beim allerersten Programmstart sollte die aktuelle Zeit gespeichert werden. Bei jedem weiteren Programmstart würde ich beim Programmstart per Preferences in die Registry schreiben und überprüfen, ob jemand vielleicht die Zeit manuell zurück gestellt hat und in diesem Fall den Start mitz einem Hinweis abbrechen. Zum anderen braucht man dann eine Angabe über die gültige Zeitperiode, und ob diese Periode seit dem ersten Start bereits verstrichen ist.
Für jeden, der technisch ein bisschen versierter ist sollte es kein Problem sein, das auszuhebeln. Die Masse der Nutzer wird das aber sicher im Zaum halten. Außerdem ist es saunervig, in der Registry rumfummeln zu müssen oder manuell die Zeit umzustellen.
 
A

awd23123wadad

Gast
Also, wenn man "Preferences" verwendet, dann wird unter Windows in die Registry geschrieben, bei anderen Systemen halt irgend etwas anderes gemacht. Die Kompatibilität des Programms ist dadurch nicht beeinträchtigt.
Zur Realisierung: Beim allerersten Programmstart sollte die aktuelle Zeit gespeichert werden. Bei jedem weiteren Programmstart würde ich beim Programmstart per Preferences in die Registry schreiben und überprüfen, ob jemand vielleicht die Zeit manuell zurück gestellt hat und in diesem Fall den Start mitz einem Hinweis abbrechen. Zum anderen braucht man dann eine Angabe über die gültige Zeitperiode, und ob diese Periode seit dem ersten Start bereits verstrichen ist.
Für jeden, der technisch ein bisschen versierter ist sollte es kein Problem sein, das auszuhebeln. Die Masse der Nutzer wird das aber sicher im Zaum halten. Außerdem ist es saunervig, in der Registry rumfummeln zu müssen oder manuell die Zeit umzustellen.

Wie erkennst du den ersten Programmstart? Das nichts in dem Pref. steht? Nun, dann schnell eine *.reg erstellt, die die Schlüssel beim Start löscht und man hat immer einen Neustart.

Damit ist es für jeden nachvollziehbar was wann so hingeschrieben wird
Process Monitor

Des Weiteren lassen sich JARs oder Java *.class prima decompilieren und somit sogar die Abfrage aus dem Programmcode nehmen.
 

Andi_CH

Top Contributor
Wie erkennst du den ersten Programmstart? Das nichts in dem Pref. steht? Nun, dann schnell eine *.reg erstellt, die die Schlüssel beim Start löscht und man hat immer einen Neustart.
Es muss schon eine spezielle Installationsroutine sein, die den Eintrag erstellt - logisch kann man auch das umgehen, aber die Installationroutine kann ja so gebaut sein, dass sie nach dem 1.Mai 2012 oder so schon gar nicht mehr funktioniert.
 

Guybrush Threepwood

Top Contributor
Man kann eigentlich sehr leicht sehen, ob das Programm bereits einmal gestartet wurde. Wenn man Werte mittels Preferences aus der registry ausliest kann man einen default-Wert angeben der dann verwendet wird, wenn ein entsprechender Schlüssel noch nicht existiert.
Die einschränkung ist, dass das jeweils nur im Benutzerkonto gespeichert wird und nicht systemweit. Hierfür wären tatsächlich andere Herangehensweisen notwendig, die die Kompatibilität brechen würden (Exe-Wrapper mit Windows-manifest). Wenn man sich auf eine Plattform wie z. b. Windows einschränken kann, dann wird es also erheblich leichter. Man kann dann auh eine Installationsumgebung wie NSIS nehmen und bei programmstart mit Administratorrechten in die registry schreiben. In diesem Fall hat man die Information für alle Benutzer gleich, vorausgesetzt man schreibt in den passenden Ast.

Unter Strich muss man aber sagen, dass diese Herangehensweise nicht wirklich 100%ig zuverlässig ist. Schließlich kann man registry-Schlüssel leicht per hand löschen. für die meisten benutzer ist das aber eine unüberwindbare Hürde.

Viele Grüße!
 

Dit_

Bekanntes Mitglied
Wenn du dich für die Registry Variante entscheidest wird dein Programm nur auf Windows laufen, das solltest du bedenken.
Hier im Forum fliegt irgendwo nen fertiges Programm rum mit dem du in der Registry schreiben kannst, da musste mal die suche benutzen.

:bahnhof:

Registry funktioniert genauso gut mit Linux und Mac (XML).

Habe ein Programm am laufen das die Benutzereinstellungen mit Hilfe der Preferences speichert. Funktioniert auf allen 3 Platformen einwandfrei.

P.S. @Flipp

vielleicht mal mit Webstart versuchen? Sprich, du Speicherst die Daten auf deinem Server.
 
Zuletzt bearbeitet:

Andi_CH

Top Contributor
Linux hat keine Registry! Da bin ich mir ganz sicher und beim Mac, da läuft ja etwas ähnliches, bin ich mir so gut wie sicher, dass der das auch nicht hat.

Vielleicht hast du eine plattformspezifische Bibliothek verwendet, die das irgendwie abbildet.
 

Guybrush Threepwood

Top Contributor
Linux hat keine Registry! Da bin ich mir ganz sicher und beim Mac, da läuft ja etwas ähnliches, bin ich mir so gut wie sicher, dass der das auch nicht hat.

Vielleicht hast du eine plattformspezifische Bibliothek verwendet, die das irgendwie abbildet.

Nein, das macht die Standard-API automatisch. Die Einstellungen werden zwar plattformspezifisch verschieden abgelegt. Für das Programm ist das aber egal:
A node in a hierarchical collection of preference data. This class allows applications to store and retrieve user and system preference and configuration data. This data is stored persistently in an implementation-dependent backing store. Typical implementations include flat files, OS-specific registries, directory servers and SQL databases. The user of this class needn't be concerned with details of the backing store.
Preferences (Java Platform SE 6)
 

Empire Phoenix

Top Contributor
Alsdo ich würde ja das Programm nur einen Launcher mitgeben, dann tippt man logindaten ein und die gesamte logick wird dann vom einem Server bereitgestellt, bw die Klassen werden von dort dynamisch geladen(solange halt der login gültig ist)
 

Nicer

Bekanntes Mitglied
Alsdo ich würde ja das Programm nur einen Launcher mitgeben, dann tippt man logindaten ein und die gesamte logick wird dann vom einem Server bereitgestellt, bw die Klassen werden von dort dynamisch geladen(solange halt der login gültig ist)

Und was machst du wenn dein Anwender ( aus welchem grund auch immer ) grade keine Internetverbindung hat ?
 

Flipp

Mitglied
Ich glaube, für den Anfang reicht es mir, eine Datei im Homeverzeichnis des Users zu erzeugen, die beim Öffnen des Programmes geprüft wird. Das ist zwar alles andere als narrensicher, aber es geht auch mehr darum den Durchschnittsuser vor der Weiterverwendung abzuhalten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Kommunikation "normaler PC" mit lokaler Software an "Cloud Service" und umgekehrt Java Basics - Anfänger-Themen 15
H software entwicklung Java Basics - Anfänger-Themen 139
B Email Client in der eigenen Software einbauen Java Basics - Anfänger-Themen 3
M JDK installieren Welche Software bei XP? Java Basics - Anfänger-Themen 5
S3CR3T Architektur der Software Java Basics - Anfänger-Themen 6
Mxxxt UML Software Java Basics - Anfänger-Themen 2
B Serial Key - Prüfung ob Software gekauft Java Basics - Anfänger-Themen 1
D Software per ssh downloaden und installieren Java Basics - Anfänger-Themen 2
A Software zum Umrechnen römischer Zahlen Java Basics - Anfänger-Themen 10
H Liste ausgeben (Spiel Hey Fisch (software-challenge) ändern Anzahl Fische) Java Basics - Anfänger-Themen 1
B Allgemein Frage zur Software Entwicklung Java Basics - Anfänger-Themen 3
OnDemand Software-Design Java Basics - Anfänger-Themen 1
B [Projekt] CyberCafé Software Java Basics - Anfänger-Themen 13
J Hosting Software Java Basics - Anfänger-Themen 2
A Welche UML Software benutzt ihr / ist empfehlenswert? Java Basics - Anfänger-Themen 2
F software engeneering --> dokumentation??! Java Basics - Anfänger-Themen 6
J Software problem unter VISTA Java Basics - Anfänger-Themen 3
K GUI Builder Software ? Java Basics - Anfänger-Themen 6
G Java Software Tuner Java Basics - Anfänger-Themen 6
G Versionierung von Software Java Basics - Anfänger-Themen 4
G Software Updates in Eclipse Java Basics - Anfänger-Themen 11
E software concept erstellen! Java Basics - Anfänger-Themen 4
N software die sich als hardware ausgibt? Java Basics - Anfänger-Themen 6
M Java-Software so anbieten, dass sie leicht zu starten ist Java Basics - Anfänger-Themen 16
D Java Software zeigen nichts mehr an Java Basics - Anfänger-Themen 2
A Good articles about software component technology? Java Basics - Anfänger-Themen 2
X Java Versionen und Software-Paketnamen Java Basics - Anfänger-Themen 4
N Welche software hab ich eigentlich ? Java Basics - Anfänger-Themen 17
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
O TextField in GridPane beschränken Java Basics - Anfänger-Themen 5
B Auswahlmöglichkeit bei Quiz beschränken Java Basics - Anfänger-Themen 21
Q Scanner auf eine Zahl beschränken Java Basics - Anfänger-Themen 2
M JTextArea Zeichen Beschränken Java Basics - Anfänger-Themen 11
J eingabe beschränken ansonsten exception!! Java Basics - Anfänger-Themen 7
G Eingabe im jTextField auf Zahlen beschränken Java Basics - Anfänger-Themen 2
I Swing-Komponenten-Größe im GridBagLayout beschränken Java Basics - Anfänger-Themen 2
P String auf Zahlen beschränken Java Basics - Anfänger-Themen 16
G Zugriff auf eine Klasse beschränken. Java Basics - Anfänger-Themen 6
P JFormattedTextField auf x zeichen beschränken Java Basics - Anfänger-Themen 6
M Float-Zahl auf x Stellen beschränken Java Basics - Anfänger-Themen 6
R Programm zeitlich beschränken lassen. Java Basics - Anfänger-Themen 2
D Eingabe auf Zahlen beschränken Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben