Hallo,
ich bin auf der Suche nach einem Regitry Eintrag unter Windows, der mir
das aktuelle Datum liefert.
Die Systemuhr möchte ich dabei nicht verwenden.
Vielleicht gibt es ja etwas wie z.B. einen Eintrag mit dem Zeitpunkt des
Systemstarts?
Bin für jeden Hinweis dankbar.
Pit
Pit schrieb:> Vielleicht gibt es ja etwas wie z.B. einen Eintrag mit dem Zeitpunkt des> Systemstarts?
wenn, dann ist der doch auch mit Hilfe der Systemuhr geschrieben
worden??
Ansonsten hilft nur NTP..
Pit schrieb:> Die Systemuhr möchte ich dabei nicht verwenden.
Ich verstehe nicht ganz, worauf du hinaus willst. Alle Zeiten im Rechner
kommen von der Systemuhr.
Vielleicht kannst du deine Beweggründe und Vorstellungen mal erläutern?
Wenn es um die Uhrzeit des Systemstarts geht:
mit "GetTickCount()" lässt sich die Zeit seit Systemstart ermitteln.
Diese von der aktuellen Uhrzeit abziehen - fertig.
mfG
Pit schrieb:> das aktuelle Datum liefert.> Vielleicht gibt es ja etwas wie z.B. einen Eintrag mit dem Zeitpunkt des> Systemstarts?
Der Systemstart kann aber schon 14 Tage oder ein viertel Jahr her sein.
Von daher keine gute Idee.
Willst du das aktuelle Datum, wie du es oben geschrieben hast, oder
willst du das Datum zum Zeitpunkt des Systemstarts?
Die Startzeit des Systems findest du so heraus:
Am CMD-Prompt eingeben:
systeminfo | find "Systemstartzeit"
Was willst du eigentlich erreichen? Kannst du dich mal dazu äußern,
bevor wir hier weiter raten? :-)
@El Jefe:
Bevor wir Gefahr laufen, aneinander vorbei zu reden:
Mit Systemuhr ist nicht die RTC gemeint, sondern der ganze
"Software-Mechnismus", der sich um Uhrzeit und Datum dreht. Das Stück
Betriebssystem bezeichne ich als Systemuhr. Ok?
Den Zeitpunkt des Systemstarts (um wenigstens eine der Fragen zu
beantworten) kann man im Dateisystem finden - das ist die Änderungszeit
der Datei c:\pagefile.sys
Rufus Τ. F. schrieb:> Den Zeitpunkt des Systemstarts (um wenigstens eine der Fragen zu> beantworten) kann man im Dateisystem finden - das ist die Änderungszeit> der Datei c:\pagefile.sys
Das ist doch mal ein Hinweis. Danke.
Die Systemuhr ist schnell mal umgestellt. Ein Eintrag in der Registry
nicht. Jedenfalls dann nicht, wenn der Anwender nicht weiss, um welchen
es sich handelt.
Was das Ganze soll? Ich brauche einen möglichst objektiven Blick auf die
Uhrzeit. Und zwar ohne das Ding unten rechts am Bildschirm zu verwenden.
Pit
Welche Zeit in der Registry ändert sich denn nicht wenn man die
Systemzeit ändert?! Auch die "Zeit unten rechts" betrifft die Systemzeit
- diese ändert die vom BIOS vorgegebene / eingestellte Zeit. Du brauchst
ja eine Referenz... ich gehe mal von einem "Kopierschutz / Dongleschutz"
aus - auf was das eventuell hier hinausläuft.
Du brauchst eine Referenz, und die Systemzeit ist in deinem Fall keine,
wenn ein Anwender ein Programm nur in einem bestimmten Zeitraum nutzen
darf. Und er dies in der Systemzeit zurückstellt - dann wird dies auch
geändert. In der Regisrty ist mir kein Wert bekannt welcher nach einem
Neustart z.b. die "alte" Zeit noch hat. Du kannst dies umgehen indem du
deine eigene Referenz machst. Dein Programm speichert in regelmäßigen
Abständen die aktuelle Zeit in irgendeiner externen Datei
(verschlüsselt) oder eben irgendwo versteckt in der Registry - und
vergleicht diese ob die Zeit seit der letzten Prüfung nicht zu grob
Abweicht (z.b. fünf Minuten oder so) und dann kannst du entscheiden.
Oh je, da möchte wohl jemand einen "besonders sicheren" Softwareschutz
entwickeln, mit dem sich eine ablaufende Lizenz verwirklichen läßt...
Meist taugt Software umso weniger, je mehr der Entwickler sich um
Kopierschutz, Lizenzverwaltung & Co sorgt, anstatt an der eigentlichen
Funktionalität zu arbeiten...
Draco schrieb:> ich gehe mal von einem "Kopierschutz / Dongleschutz"> aus - auf was das eventuell hier hinausläuft.
Genau, sehr gut erkannt.
Draco schrieb:> Du brauchst eine Referenz, und die Systemzeit ist in deinem Fall keine,> wenn ein Anwender ein Programm nur in einem bestimmten Zeitraum nutzen> darf.
Genau deshalb will ich sie ja auch nicht nutzen.
Draco schrieb:> In der Regisrty ist mir kein Wert bekannt welcher nach einem> Neustart z.b. die "alte" Zeit noch hat. Du kannst dies umgehen indem du> deine eigene Referenz machst.
Das mach ich ja auch indem ich den Installationszeitpunkt in der
Registry sichere.
Ich suche den Vergleichswert - also die aktuelle Zeit / Datum, und zwar
unverfälscht.
Und tatsächlich...
Rufus Τ. F. schrieb:> Den Zeitpunkt des Systemstarts (um wenigstens eine der Fragen zu> beantworten) kann man im Dateisystem finden - das ist die Änderungszeit> der Datei c:\pagefile.sys
das ist genau der Zeitpunkt, zu dem der Rehner hochgefahren wurde. Das
lässt sich vorzüglich verwenden.
Thosch schrieb:> Oh je, da möchte wohl jemand einen "besonders sicheren" Softwareschutz> entwickeln, mit dem sich eine ablaufende Lizenz verwirklichen läßt...
Warum 'besonders sicher'? Ich finde die Methode eher 'besonders simpel'.
Ein Registry Eintrag schreiben und ein Installationsdatum einer Datei
lesen. Was ist daran kompliziert oder umständlich, oder wie Du es sagen
würdest: 'besonders sicher'?
Thosch schrieb:> Meist taugt Software umso weniger, je mehr der Entwickler sich um> Kopierschutz, Lizenzverwaltung & Co sorgt, anstatt an der eigentlichen> Funktionalität zu arbeiten...
Ja, ja, so ist das wohl.
Danke noch mal. Pit
Pit schrieb:> das ist genau der Zeitpunkt, zu dem der Rehner hochgefahren wurde. Das> lässt sich vorzüglich verwenden.
Das ist der Zeitpunkt, an dem der Rechner meint hochgefahren worden zu
sein. Wenn du vorher die RTC umstellst steht da halt auch nur die vom
Anwender gewünschte Zeit.
Thosch schrieb:> Meist taugt Software umso weniger, je mehr der Entwickler sich um> Kopierschutz, Lizenzverwaltung & Co sorgt, anstatt an der eigentlichen> Funktionalität zu arbeiten...
Dem ist nichts hinzuzufügen.
Dann muesst man noch nachschauen,ob hochfahren auch un-hibernate
beinhaltet, oder nur den Kaltstart. Ich zB hibernate ausschliesslich und
komme so auf Systemlaufzeiten von Monaten.
Pit schrieb:> Draco schrieb:>> In der Regisrty ist mir kein Wert bekannt welcher nach einem>> Neustart z.b. die "alte" Zeit noch hat. Du kannst dies umgehen indem du>> deine eigene Referenz machst.>> Das mach ich ja auch indem ich den Installationszeitpunkt in der> Registry sichere.> Ich suche den Vergleichswert - also die aktuelle Zeit / Datum, und zwar> unverfälscht.
Du musst nicht nur den Installationszeitpunkt sichern, sondern den
letzten Ausführungszeitpunkt. Und mit diesem Arbeiten. Bau dir ein
gescheites Ablaufdiagramm und schau schau es dir in Ruhe an.
Pit schrieb:> Rufus Τ. F. schrieb:>> Den Zeitpunkt des Systemstarts (um wenigstens eine der Fragen zu>> beantworten) kann man im Dateisystem finden - das ist die Änderungszeit>> der Datei c:\pagefile.sys>> das ist genau der Zeitpunkt, zu dem der Rehner hochgefahren wurde. Das> lässt sich vorzüglich verwenden.
Falsch, dumme Idee, das ist der Zeitpunkt des letzten Hochfahrens. Ich
versuche dir das mal zu erklären wie ein normaler User das umgehen würde
wollen:
(Ich darf die Software 10 Tage nutzen)
- Rechner an.
- Es ist der 11.08.
- Deine Software startet, schaut aufs Installationsdatum (01.08.)
- Deine Software vergleicht es mit pagefile.sys (Datum 11.08.)
- Deine Software sagt: "Oh... deine Zeit ist um!"
- Ich beende deine Software und stelle die Systemzeit auf (03.08.)
- Deine Software startet, schaut aufs Installationsdatum (01.08.)
- Deine Software vergleicht es mit pagefile.sys (Datum 11.08.)
- Deine Software sagt: "Oh... deine Zeit ist um!"
- Ich beende deine Software
- Ich starte den Rechner neu
- Deine Software startet, schaut aufs Installationsdatum (01.08.)
- Deine Software vergleicht es mit pagefile.sys (nun Datum 03.08.)
- Deine Software sagt: "Jawoll, im Zeitraum!"
--> Dein Schutz ist ausgehebelt.
Wenn du nun aber während der Laufzeit deine aktuelle Zeit änderst,
speicherst und vergleichst, hast du einen wesentlich besseren Schutz.
Und sollte es wirklich sicher sein, dann nimm deine Zeit einfach von
einem NTP Server, sollte dieser nicht erreichbar sein - weil ne Firewall
davor sitzt oder das NW Kabel gezogen - dann unterbinde die Nutzung der
Software. (Gut, da kann man auch den NTP Server umrouten auf einen
eigenen, mit einer falschen Zeit und diesen tracken lassen, dann hat er
es aber auch verdient die Software weiter nutzen zu können :-D )
Draco schrieb:> dann nimm deine Zeit einfach von> einem NTP Server, sollte dieser nicht erreichbar sein - weil ne Firewall> davor sitzt oder das NW Kabel gezogen - dann unterbinde die Nutzung der> Software.
Das wäre für mich für jede Software das absolute KO-Kriterium, selbst
wenn es sich um ein geniales Programm handeln würde, was nach dem Ansatz
des TO eher unwahrscheinlich ist. Ich denke auch dass das rechtlich
bedenklich ist, jedenfalls wenn man Software verkauft und nicht
verleiht.
Ein eigener NTP-Server ist ja auch kein Problem oder sogar sowieso
vorhanden, und ein direkt nach der Installation gespeichertes Image mit
der passenden Systemzeit zurückzuspielen auch nicht - aber
erfahrungsgemäss ist eine solche Software den Aufwand garnicht wert.
Georg
Oh D. schrieb:> Dann muesst man noch nachschauen,ob hochfahren auch un-hibernate> beinhaltet, oder nur den Kaltstart. Ich zB hibernate ausschliesslich und> komme so auf Systemlaufzeiten von Monaten.
Das schadet ja nicht. Dann läuft das Programm eben garnicht.
Draco schrieb:> Du musst nicht nur den Installationszeitpunkt sichern, sondern den> letzten Ausführungszeitpunkt. Und mit diesem Arbeiten. Bau dir ein> gescheites Ablaufdiagramm und schau schau es dir in Ruhe an.
Ja das mach ich ja auch noch. Aber man kann auch Änderungen in der
Registry nachverfolgen. Das mit der Systemzeit ist eigentlich nur der
'doppelte Boden'.
Draco schrieb:> Falsch, dumme Idee, das ist der Zeitpunkt des letzten Hochfahrens. Ich> versuche dir das mal zu erklären wie ein normaler User das umgehen würde> wollen:
Darauf kommt man aber nur, wenn man diesen Thread verfolgt hat.
Jedenfalls ist das Umstellen der Systemzeit unten rechts DER
'Klassiker'. Und wenn man dann auch noch hergeht und den Rechner 3 mal
rauf und runter fährt und die Mainboard Zeit umstellt, und sich dadurch
vlt. das Windows-System zerrupft, dann hat man es auch verdient meine
Software zu nutzen.
Euler schrieb:> Thosch schrieb:>> Meist taugt Software umso weniger, je mehr der Entwickler sich um>> Kopierschutz, Lizenzverwaltung & Co sorgt, anstatt an der eigentlichen>> Funktionalität zu arbeiten...>> Dem ist nichts hinzuzufügen.
Doch. Das war jetzt ein Dreizeiler, 5 Minuten:
[code]
Hier sollte eigentlich das Snippet stehen.
Aber ich spar mir das mal.
Ist ja eh nur Mist.
[\code]
Gruß Pit
Georg schrieb:> Das wäre für mich für jede Software das absolute KO-Kriterium, selbst> wenn es sich um ein geniales Programm handeln würde, was nach dem Ansatz> des TO eher unwahrscheinlich ist. Ich denke auch dass das rechtlich> bedenklich ist, jedenfalls wenn man Software verkauft und nicht> verleiht.
Das ist üblich, was denkst du denn?! Und warum sollte das rechtlich
bedenklich sein? Mal ein Beispiel aus unserem (µC) Bereich wer das so
macht: Target 3001 z.b. sowie wird das eigentlich bei viiiielen
Timetrials heutzutage so gemacht.
http://server.ibfriedrich.com/wiki/ibfwikide/index.php?title=Begr%C3%BC%C3%9Fungsdialog
Wenn man darauf hinweißt das eine bestehende Verbindung nötig ist um
die Software zu nutzen ist das doch völlig okay. Es werden ja keine
Daten nach außen gesendet, es wird sich ein korrekter Timestamp geholt.
Draco schrieb:> sowie wird das eigentlich bei viiiielen> Timetrials heutzutage so gemacht.
Dass es sich um eine Testversion handelt hat niemand gesagt. Da würde
ich das ja noch akzeptieren, aber nicht wenn ich für das Programm
gezahlt habe und dann damit rechnen muss, dass die Software nicht mehr
funktioniert, weil der Programmierer die Lust verloren und seinen Server
abgeschaltet hat oder weil die Firma verkauft wurde usw. usw.
Auf jeden Fall muss man eindeutig darauf hinweisen, dass die Software
bzw. deren Nutzung nicht verkauft, sondern nur vorübergehend ausgeliehen
wird. Ebenso muss klargestellt sein, was mit den erstellten Daten
geschieht, wenn die Lizenz abgelaufen ist - dass die schlicht verloren
sind würde ich niemals akzeptieren.
Wenn es sich um Software handelt, die für eine Firma von strategischer
Bedeutung ist, etwa Buchhaltung oder Fertigungspalnung, sieht man sich
als Programmiere bei Problemen mit dem Softwareschutz auch schnell
Schadensersatzansprüchen in praktisch unbegrenzter Höhe gegenüber, das
sollte man sich schon gut überlegen.
Georg
Georg schrieb:> Wenn es sich um Software handelt, die für eine Firma von strategischer> Bedeutung ist, etwa Buchhaltung oder Fertigungspalnung, sieht man sich> als Programmiere bei Problemen mit dem Softwareschutz auch schnell> Schadensersatzansprüchen in praktisch unbegrenzter Höhe gegenüber, das> sollte man sich schon gut überlegen.
Dafür wurde die GmbH erfunden.
Georg schrieb:> Dass es sich um eine Testversion handelt hat niemand gesagt. Da würde> ich das ja noch akzeptieren, aber nicht wenn ich für das Programm> gezahlt habe und dann damit rechnen muss, dass die Software nicht mehr> funktioniert, weil der Programmierer die Lust verloren und seinen Server> abgeschaltet hat oder weil die Firma verkauft wurde usw. usw.
Ein NTP Zeitserver ist doch nicht unbedingt privat? Gibt doch auch
staatliche Zeitserver. Er empfängt doch keine Daten von seinem eigenen
Server.
Georg schrieb:> Auf jeden Fall muss man eindeutig darauf hinweisen, dass die Software> bzw. deren Nutzung nicht verkauft, sondern nur vorübergehend ausgeliehen> wird. Ebenso muss klargestellt sein, was mit den erstellten Daten> geschieht, wenn die Lizenz abgelaufen ist - dass die schlicht verloren> sind würde ich niemals akzeptieren.
Warum sollten den die Daten verloren sein wenn die Timetrial abgelaufen
ist?! Wie denkst du denn wie das gehandhabt wird bei sonstiger Timetrial
Software, sei es gekauft oder als Demo - ich führe mal Office 360 von
Microsoft an, welche ebenfalls ein Zeitmodel haben?! Wie das mit Visual
Studio ist? Mit Altium? etc... da gibt es tausende große Firmen die
solche Zeitlizenzen haben, du tust ja so als ob das was
außergewöhnliches ist.
Georg schrieb:> Wenn es sich um Software handelt, die für eine Firma von strategischer> Bedeutung ist, etwa Buchhaltung oder Fertigungspalnung, sieht man sich> als Programmiere bei Problemen mit dem Softwareschutz auch schnell> Schadensersatzansprüchen in praktisch unbegrenzter Höhe gegenüber, das> sollte man sich schon gut überlegen.
So nen Quark, dafür gibt es Disclaimer und AGBs, welche bei Benutzung
der Software akzeptiert werden müssen. Kannst dich auch gerne mal hier
belesen:
http://www.it-rechtsanwalt.com/softwarerecht/der-standardsoftware-kaufvertrag-4221.php
In solch einem Fall muss im übrigen dem Programmierer grobe
Fahrlässigkeit nachgeweisen (!!) werden, welche ja bei abschaltung eines
staatlichen Zeitservers nicht gegeben ist. Desweiteren ist der Benutzer
der Software auch verpflichtet seine Daten in regelmäßigen Abständen zu
sichern - wie er dies macht - ist ja dem Programmierer gleich, und wenn
der Nutzer den Monitor auf den Kopierer liegt. So einfach wie du das
sagst isses nicht gegen eine Software zu klagen.
Draco schrieb:> Desweiteren ist der Benutzer> der Software auch verpflichtet seine Daten in regelmäßigen Abständen zu> sichern
Was ihm rein garnichts nützt, wenn er sie wegen abgelaufener
Softwarelizenz nicht mehr lesen kann. Da fehlt es wohl am logischen
Denken - natürlich sind Backups wichtig, nur nicht dafür.
Draco schrieb:> Warum sollten den die Daten verloren sein wenn die Timetrial abgelaufen> ist?! Wie denkst du denn wie das gehandhabt wird bei sonstiger Timetrial> Software, sei es gekauft oder als Demo
Ich hatte definitiv schon ein umfangreiches Entwurfsprogramm für FPGAs
u.ä. da, mit einer Lizenz für 1 Jahr - um festzustellen, dass ich nach
Ablauf der Lizenz nicht mal mehr die Pinbelegung der entworfenen Chips
auslesen konnte und auch sonst nichts - also 100% Datenverlust.
Praktisch ist das Erpressung zur Erneuerung der Lizenz, aber aus
grundsätzlichen Gründen habe ich es vorgezogen, die Teile mit anderer
Software neu zu erstellen, ich lasse mich nun mal weder gern erpressen
noch betrügen.
Georg
Ja natürlich, aber ich weiß doch das die Lizenz nach einer gewissen Zeit
nicht mehr gültig ist, deswegen hat man sich ja mal irgendwann für
dieses Modell der Entschädigung entschieden?! Ich verstehe dein Problem
nicht, und natürlich sollte einem halbwegs normal denkendem Menschen in
den Sinn kommen, das ich dieses Programm nach der Zeit nicht mehr nutzen
kann, weder mit den Daten die bereits gespeichert sind, noch mit neuen.
Das ein Programm, im µC Bereich, aber einen Chip "sperrt" nach Ablauf
der Lizenz - quasi ein externes Bauteil - das ist mir allerdings neu.
Das kenne ich nicht. Namen?!
Draco schrieb:> aber einen Chip "sperrt" nach Ablauf> der Lizenz - quasi ein externes Bauteil
Was immer du da verstanden hast - es geht um einen mit der Software
konstruierten Custom-Chip, auf Basis von CPLD oder FPGA. Vergleichbar
wäre, wenn man nach Ablauf einer zeitlich begrenzten Office-Lizenz
geschriebene Briefe nicht mehr lesen könnte - das widerspricht schon den
gesetzlichen Anforderungen an die Dokumentation. Um das klar zu stellen:
es geht nicht darum, dass man Dateien nicht mehr ändern kann, das wäre
ja ok, sondern man kann überhaupt nicht mehr darauf zugreifen. Und ja,
solche Software gibt es, und die Dateien sind auch propriertär, man kann
sie auch mit keinem anderen Programm lesen.
Soweit das Finanzamt im Spiel ist, sind die Anforderungen immer strenger
geworden, es wird verlangt, dass auch die Buchhaltung längst vergangener
Jahre noch zugreifbar ist. Die Ausrede, meine Lizenz ist abgelaufen, da
kann man nichts mehr nachschauen, führt u.U. zu einer Strafanzeige.
Georg
Ich ärgere mich auch über Trial-Software, die nach der Probezeit so
komplett ihren Dienst einstellen. Daher kann ich Georgs Einwände gut
verstehen aber auch Draco hat Recht - wenn die Zeit abgelaufen ist kann
man nicht erwarten, dass die Software noch voll oder teilweise
funktioniert (das man noch lesend zugreifen kann ist nett darf man aber
nicht erwarten).
Mich interessiert der technische Aspekt der Ausgangsfrage aber mehr als
die Rechtlichen.
Wie schreibe ich selber eine Trial-Software, die man nicht so leicht
knacken kann ?
Ich denke der Weg über einen festen öffentlichen NTP-Server ist ganz
gut.
Vergleich von Installationszeitpunkt mit dem Aktuellen.
Ist keine Verbindung möglich (Firewall, Stecker gezogen) könnte man
umschalten auf Laufzeitbeschränkung plus limitierte Programmstarts z.B.
10 Starts mit maximal 48Stunden Programmlaufzeit. Per Timer-Event im
Sekundentakt könnte man die 48Std runterzählen so wäre man Systemzeit
unabhängig.
Gute Idee, schlechte Idee, bessere Idee ?
Gruß
Taz
Taz G. schrieb:> Vergleich von Installationszeitpunkt mit dem Aktuellen.
Da fehlt eine Absicherung dagegen, immer wieder neu zu installieren. Das
müsste man also kombinieren mit etwas anderem, z.B. einem
Installationskey mit begrenzter Lebensdauer.
Georg
Georg schrieb:> Da fehlt eine Absicherung dagegen, immer wieder neu zu installieren.
Guter Einwand, hab ich gar nicht dran gedacht.
Man könnte auch, was mir gar nicht gefällt eine Information auf dem
Rechner hinterlassen - in der Registry oder irgendwo im
Systemverzeichnis.
Der Key ist eine gute Idee.
Taz
Man kann das Problem nur mit einem Online-Zwang abschliessend lösen,
darum machen das die grossen Firmen wie Microsoft, Apple, Adobe etc. ja
auch so. Die Lizenz wird immer mal wieder online beim
Hersteller/Lieferanten überprüft.
Taz G. schrieb:> Man könnte auch, was mir gar nicht gefällt eine Information auf dem> Rechner hinterlassen - in der Registry oder irgendwo im> Systemverzeichnis.
Kannst du gleich vergessen, das findet man, vielleicht nicht jeder DAU,
aber jeder der sich auskennt. Und es gibt z.B. Software, die die
Installation überwacht und festhält, was alles geändert wurde. Und wenn
mir das zuviel ist spiele ich einfach das Image von vor der Installation
wieder auf.
Georg
Georg schrieb:> vielleicht nicht jeder DAU, aber jeder der sich auskennt
Ich meinte für DAU, bei jemanden der sich auskennt steigt der Aufwand
enorm.
Man kann ja auch eine viruelle Maschine benutzen, die man immer wieder
reseten kann.
Sicher wäre Online-Zwang da müsste man als Entwicker aber immer einen
Server laufen haben. Als privat Person nicht optimal.
Interessant wie kompliziert die Sache wird wenn man mal darüber
nachdenkt.
Taz