CPU internal time

Tagamoga

Mitglied
Hallo allerseits,

besteht eine Möglichgelich mit Java auf die akutelle CPU zeit zuzugreifen?

Also ich möchte nicht die die Systemzeit, die mir Windoof vorgaukelt, sondern die CPU Zeit, die der Core hat. geht das?

Grüße, Taggi
 
Hallo,

was genau meinst du denn? Möchtest du die aktuell vom Prozessor in diesem Prozess verbratene Prozessorzeit (bzw. Prozessorauslastung: http://www.tutorials.de/forum/java/238261-prozessorlast-auswerten.html ) wissen oder den "aktuellen" Wert der RTC?
Kannst du vielleicht eine C-Funktion nennen die dir das gewünschte Ergebis liefern würde? Dann könnte man schon eher sehen, was du meinst. Die könntest du dann auch per JNA aufrufen. https://jna.dev.java.net/

Ansonsten kommst du noch mit:
Java:
ManagementFactory.getThreadMXBean().getCurrentThreadCpuTime()
ManagementFactory.getThreadMXBean().getCurrentThreadUserTime()

An entsprechende Zeitwerte ran.

Gruß Tom
 
Leider kann ich Dir keine C Funktion dazu sagen. es geht nicht um einen Thread sondern z.b. darum:

Jemand installiert ein Program, das für 30 Tage lizensiert ist. Nimmt man die normale Systemzeit von Windows, braucht der User nur das Datum zurückzustellen und weitermachen.

Speichert man aber die Uhrzeit der CPU ab, kann er selbst durch ein zurücksetzten der Zeit nichts ändern.

Es gibt noch andere Prozesse, die nicht ganz rund laufen, wenn man die Windows Zeit nimmt und der User ändert diese. Also am besten gleich die der CPU nehmen, die läuft ja weiter...

Aber der Tipp mit dem JNA ist gut, ich schaue mal, ob ich so etwas unter c finde.

Danke, Taggi
 
Hallo,

ah ja, das ist schon klarer. Hmm als ich weis nicht ob die RTC (Real Time Clock) ran kommen kannst, bzw. ist dass dann nicht die CMOS - Clock? Die kann man aber auch über das BIOS manipulieren.

Gruß Tom
 
Irgendwelche Lösungen muss es zu dem Thema ja geben.

Vielleicht Abfrage der Zeit über das Internet sofern sicher gestellt werden kann dass dies immer vorhanden ist. Ansonsten könnte man sich das letzte Startdatum ja in einer Datei merken und wenn die Zeit zurückgestellt wurde kann man das so feststellen. Zwar auch nicht ganz sicher aber immerhin...
 
Internet ist nicht standardmäßiug vorhanden. *leider*

Die Idee mit dem Abspeichern war auch schon besprochen, aber als zu Fehleranfällig fallen gelassen.

Was das spezielle Lizensierungsproblem angeht, wird auch überlegt, ob man nicht einfach die Lizensierung auf x Stunden Laufzeit umrechnet... Während das Porgramm läuft, kann man ja sicher die Lauflänge des Threads abfragen.

Aber leider sind alle besprochenen Lösungen nciht wirklich das wahre... Deshalb suche ich noch etwas weiter. Sobald ich etwas "sicheres" weiß, sage ich Euch bescheid...

Danke für die Vorschläge,

Taggi
 
Hallo,

Wie wäre es den Zeitstempel der Installation verschlüsselt zu speichern?
... und dann schauen ob aktuelle Zeit > Zeitstempel plus X Tage.
Das hilft auch nichts, da der Benutzer das Rechner-Datum vor Lizenzablauf zurücksetzen könnte (VMWARE!).

Gruß Tom
 
Also da gibts soweit ich weiss keine sichere Methode.

Alle Zeitabfragen benötigen nämlich irgendeinen gespeicherten Vergleichswert ( also Zeit der Erstinstallation oder erster Programmaufruf).
Da dieser irgendwo auf der Festplatte gespeichert werden muss (egal ob verschlüsselt oder nicht) ist er auch manipulierbar.

Ferner gibt es nur eine sehr begrenzte Anzahl an Systemzeitgebern.

RTC (RealTimeClock) die übers Bios eingestellt und geändert werden kann.
Windowszeit, die mittels Systemsteuerung geändert werden kann.
Internetzeitserver, der nicht immer verfügbar ist.

Ansonsten fällt mir nur noch die Zeit in Millisekunden seit dem 1.1.1970 ein, die aber leider wiederum von der RTC/Windowszeit abhängt.

Man könnte sich aber (sofern das Programm plattformabhängig sein darf) Auf z.b. das Installationsdatum der Windowsinstallation beziehen, oder auf irgendeinen anderen bereits gespeicherten Zeitwert. Dies erschwert dem Benutzer, der ja vermutlich keinen Quelltext bekommt die richtige Zeit zu ändern.

Als wirklich sicher (sofern man keinen eigenen Timeserver hat) ist jedoch nur der abgleich mit dem Internet. Dabei muss das Installationsdatum auf dem Firmeneigenen Server hinterlegt werden (damits nicht änderbar ist) und auch die aktuelle Zeit/Datum von einem geeigneten Server bezogen werden.
Das Programm darf ansonsten nicht installierbar bzw. startbar sein.

Das dies natürlich den User nicht gerade begeistern wird sollte klar sein, ist aber hier ja nicht Topic.

Mfg Allys
 
Zurück