Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Uptime (https://www.delphipraxis.net/127324-uptime.html)

Whatever 11. Jan 2009 12:03


Uptime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

dieses kleine Programm ist aus meiner neugierde entstanden wie lange mein Rechner wohl im Jahr läuft.
Es zeigt die Aktuelle Uptime an und rechnet diese zu einem Gesamtwert. Außerdem wird für jeden Tag einen Datei angelegt in der die Uptime dieses Tages aufgezeichnet wird und wie oft er an diesem Tag gestartet wurde.
Ein wirklicher Name ist mir nicht eingefallen daher heißt es Uptime :) also wenn jemand eine Idee für einen Namen hat immer her damit!

mfg Whatever

Edit: So jetzt ist der Pfad der Programmordner frei Wählbar!

Matze 11. Jan 2009 12:05

Re: Uptime
 
Hi,

speichere die Dateien dahin, wo sie hingehören. Beispielsweise ins Benutzerverzeichnis.
Ich möchte auf C:\ selbst keine Verzeichnisse von deinem Programm, denn die gehören dort absolut nicht hin.

Grüße, Matze

DeddyH 11. Jan 2009 12:05

Re: Uptime
 
"C:\Uptime" ist aber ein unglücklich gewählter Pfad. Das solltest Du umstellen.

Whatever 11. Jan 2009 12:08

Re: Uptime
 
Hallo,

was haltet ihr den für besser?
C:\Programme?
C:\Dokumente und Einstellungen?
Oder Eigene Dateien?

mfg Whatever

mkinzler 11. Jan 2009 12:09

Re: Uptime
 
Du handelst dir u .U. auch Ärger bei nicht Adminrechten des Benutzers ein.

[Edit: Am Besten einstellbar. Aber ja nicht im Programmverzeichnis. Am Besten im Anwendungsdatenverzeichnis]

SirThornberry 11. Jan 2009 12:09

Re: Uptime
 
ich finden den Anwendungsordner des Nutzers dafür genau richtig.

Whatever 11. Jan 2009 12:13

Re: Uptime
 
hi,

erstmal Vielen Dank für die vielen schnellen Antworten die ja fast alle das selbe sagen :)
Also ich denke ich werde versuchen den Pfad einstellbar zu machen und wenn das soweit ist lade ich die ganze Geschichte nochmal hoch.

mfg Whatever

Whatever 11. Jan 2009 12:18

Re: Uptime
 
Hallo nochmal,

dazu hab ich auch gleich mal ne Frage und zwar:
Wenn der Pfad variabel ist ist er ja bei Programmstart nicht bekannt. Wie kann ich also unabhängig vom Pfad abspeichern wo die Verzeichnisse liegen (Ich will ja nicht das der Benutzer bei jedem Start den Pfad angeben muss).
In der Registry?

mfg Whatever

DeddyH 11. Jan 2009 12:20

Re: Uptime
 
Das wäre eine Möglichkeit. Oder eine Ini im Anwendungsverzeichnis ablegen.

[edit] Mit Anwendungsverzeichnis meine ich aber nicht den Programmordner, sondern z.B. "C:\Dokumente und Einstellungen\Benutzername\Anwendungsdaten" [/edit]

SirThornberry 11. Jan 2009 12:20

Re: Uptime
 
Schau dir mal die Funktion SHGetSpecialFolderLocation an (gibts auch einige Beispiel hier im Forum).
So wie es jetzt ist kann es jedenfalls nicht bleiben da sonst nur ein Admin dein Programm ausführen darf zwecks fehlenden Schreibrechten anderer Nutzer.

Sir Rufo 11. Jan 2009 12:30

Re: Uptime
 
Wenn das Programm die Uptime des Rechners bestimmen und protokollieren soll, dann hat das doch nichts mit dem Benutzer zu schaffen, es soll ja nicht die Uptime des Benutzers ermittelt werden.

Somit müssten diese Daten eigentlich unter den Anwendungsdaten von "All Users" gespeichert werden.

cu

Oliver

[edit]
Ins Programmverzeichnis gehören alle Dateien, die zum Zeitpunkt der Installation erstellt werden und im normalen Betrieb nur gelesen werden.
In All Users\Application Data CSIDL_COMMON_APPDATA gehören alle global verfügbaren Daten rein (lesen/schreiben möglich)
In <user name>\Application Data CSIDL_APPDATA gehören alle Daten für den Benutzer rein, die u.U. auch bei einem Server-gespeicherten Profil übertragen werden sollen (lesen/schreiben möglich)
In <user name>\Application Data CSIDL_LOCAL_APPDATA gehören alle Daten für den Benutzer rein, die auch bei einem Server-gespeicherten Profil nicht übertragen werden sollen (lesen/schreiben möglich)

Wie man schön sieht, heissen die CSIDL_ alle irgendwie APPDATA, und das hat einfach auch seinen guten Grund ;)
[/edit]

mkinzler 11. Jan 2009 12:31

Re: Uptime
 
Wenn es um den Uptime des rechners geht, am Besten als Dienst.

DeddyH 11. Jan 2009 12:33

Re: Uptime
 
Und vielleicht noch einen kleinen Treiber dazu? Bleibt mal auf dem Teppich :zwinker:

mkinzler 11. Jan 2009 12:35

Re: Uptime
 
Also ein Dienst sollte doch kein Problem sein.

DeddyH 11. Jan 2009 12:36

Re: Uptime
 
So wie ich mir erlaube das Niveau des TE einschätzen zu können... denke doch.

Whatever 11. Jan 2009 12:39

Re: Uptime
 
SirRufo genau deshalb hab ich ja den Pfad auf C:\ gelegt... allerdings ist das offensichtlich nicht die beste Lösung.
Wozu genau brauch ich denn SHGetSpecialFolderLocation? Ich mein ändert sich der Pfad oder geht es ganz einfach darum das der Pfad auf verschiedenen Windows Versionen vrschieden sein kann?
Übrigens hat mein AllUsers keine Anwendungsdaten ist das Normal?

mfg Whatever

DeddyH 11. Jan 2009 12:41

Re: Uptime
 
Zitat:

Zitat von Whatever
Wozu genau brauch ich denn SHGetSpecialFolderLocation?

Um den Pfad zu einem speziellen Verzeichnis zu ermitteln (z.B. Desktop, Eigene Dateien, Anwendungsordner usw.).

Sir Rufo 11. Jan 2009 12:41

Re: Uptime
 
Ja, du bekommst da unter jeder Windows-Version den richtigen Pfad zurückgeliefert.

AllUser muss keine Daten haben, würde sich in diesem Fall aber anbieten ;)

mkinzler 11. Jan 2009 12:42

Re: Uptime
 
Zitat:

Wozu genau brauch ich denn SHGetSpecialFolderLocation? Ich mein ändert sich der Pfad oder geht es ganz einfach darum das der Pfad auf verschiedenen Windows Versionen vrschieden sein kann?
diese kann man auch Umlenken. Diese Funktion ermittelt den gültigen Pfad des Systems.

Whatever 11. Jan 2009 12:47

Re: Uptime
 
Also kann ich einfach wenn mein AllUsers keinen Anwendungsordner hat per neuer Ordner Application Data erzeugen und der wird von SHGetSpecialFolderLocation erkannt?!
Und was passiert dann wenn irgendjemand der sich das Programm geladen hat auch kein Application Data hat und aus diesem Ordner gelesen werden soll>? Wird er dann automatisch erstellt oder lieber vorher mit if DirectoryExists und ForceDirectories abfragen und wenn nötig erstellen?

mfg Whatever

Whatever 11. Jan 2009 13:15

Re: Uptime
 
hm... Wenn ich versuche den Pfad von CSIDL_COMMON_APPDATA auszulesen bekomme ich die Fehlermeldung: Undefinierter Bezeichner: 'CSIDL_COMMON_APPDATA'

Hat irgendjemand eine Idee warum er das nicht kennt? CSIDL_APPDATA funktioniert...

mfg Whatever

Whatever 11. Jan 2009 13:57

Re: Uptime
 
OK die Fehlermeldung hat sich erledigt.
Jetzt bleibt noch das Problem das manche Leute(z.B Ich) keinen Application Data Ordner in AllUsers ahben und es nichts bringt einfach mit Neuer Ordner einen zu erstellen...
Ist es denn annehmbar die INI einfach "lose" in AllUsers zu schreiben?

mfg Whatever

Whatever 11. Jan 2009 16:16

Re: Uptime
 
So nachdem ich mich jetzt ausreichend mit meinem Code herumgeschlagen habe sollte es jetzt funktionieren. Die neue Version ist im ersten Post als Anhang.
Wenn irgendwas nicht funktioniert wie´s soll SCHREIBEN :-D

mfg Whatever

SirThornberry 11. Jan 2009 16:59

Re: Uptime
 
Zitat:

Zitat von Whatever
OK die Fehlermeldung hat sich erledigt.
Jetzt bleibt noch das Problem das manche Leute(z.B Ich) keinen Application Data Ordner in AllUsers ahben und es nichts bringt einfach mit Neuer Ordner einen zu erstellen...
Ist es denn annehmbar die INI einfach "lose" in AllUsers zu schreiben?

mfg Whatever

Nur weil du den Ordner nicht siehst heißt es nicht das es diesen nicht gibt. Genau deshalb gibt es die Funktion ShGetSpecialFolderLocation etc. Weil jeder den Ordner wo andes auf der Platte haben kann.

Whatever 11. Jan 2009 17:02

Re: Uptime
 
Hallo,

Ich hab es ausprobiert ich hab mit SHGetSpecialFolderLocation nach CSIDL_COMMON_APPDATA gesucht... mir wurde nichts angezeigt.

mfg Whatever

Matze 11. Jan 2009 17:24

Re: Uptime
 
Zitat:

Zitat von Whatever
hm... Wenn ich versuche den Pfad von CSIDL_COMMON_APPDATA auszulesen bekomme ich die Fehlermeldung: Undefinierter Bezeichner: 'CSIDL_COMMON_APPDATA'

Hat irgendjemand eine Idee warum er das nicht kennt? CSIDL_APPDATA funktioniert...

Worin liegt dein Problem? CSIDL_APPDATA ist doch genau das, was du brauchst.

DeddyH 11. Jan 2009 17:30

Re: Uptime
 
Er will es ja für alle User haben.

Whatever 11. Jan 2009 17:37

Re: Uptime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Richtig!
Könnte man im Code-Library ja mal ergänzen das man für einige Befehle(?) nicht ShellApi sondern ShFolder einbinden muss. Für welche genau weiß ich jetzt auch nicht... Glaub alle die was mit COMMON zu tun haben.

mfg Whatever

PS.: Ihr dürft euch die neue Version übrigens gerne runterladen und testen :zwinker:

Matze 11. Jan 2009 17:40

Re: Uptime
 
Achso ok, wenn es da keine Probleme mit den Rechten gibt.
Schreiben und lesen kann dort jeder, aber Dateien ändern kann dort nur der Benutzer, der die Datei auch angelegt hat (außer Admins, die müssten alles können).

Whatever 12. Jan 2009 17:58

Re: Uptime
 
Die Datei muss ja auch nicht unbedingt geändert werden. Dies ist zwar möglich aber eigentlich reicht es wenn sie einmal angelegt wird und später nurnoch der Pfad aus ihr gelesen wird.

mfg Whatever

xZise 12. Jan 2009 20:35

Re: Uptime
 
Zitat:

Zitat von Whatever
[...]
Ist es denn annehmbar die INI einfach "lose" in AllUsers zu schreiben?[...]

Nein! Warum? Weil unter Windows Vista der Ordner anders heißt als unter Windows XP. Wie genau, weiß ich nicht. Möglicherweise ist das Pendant dazu "C:\Users\Default\AppData\Roaming". Deshalb verwende bitte dynamische Pfade, danke.

MfG
xZise

Whatever 12. Jan 2009 21:05

Re: Uptime
 
Hallo,


Zitat:

Zitat von Sir Rufo
Ja, du bekommst da unter jeder Windows-Version den richtigen Pfad zurückgeliefert.

[...]

ich denke auch unter Vista wird der (dynamische) Pfad zu finden sein :wink:

mfg Whatever

hathor 13. Jan 2009 11:29

Re: Uptime
 
@Whatever:

Falls Du es erweitern willst, guckst Du hier:

http://www.codeproject.com/KB/gadgets/pcNanny.aspx


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz