AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzeichni

Neuer Artikel bei mir: %HOMEDIR% - das unbekannte Verzeichni

Ein Tutorial von Luckie · begonnen am 22. Sep 2005 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte » 
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Es gibt auf meiner Homepage wieder einen neuen Artikel: %HOMEDIR% - das unbekannte Verzeichnis. Da er ein programmierspezifisches Thema behandelt, stelle ich ihn mal hier vor. In dem Artikel geht es um die Unsitte, dass Programmierer leider immer noch ihre Konfiguratiosndaten im Programmverzeichnis abelegen. In der letzten Zeit ist mir das immer wieder bei Programmen aufgefallen, die hier oder in anderen Foren vorgstellt werden. Da ich es leid war immer wieder das gleiche zu schreiben, hab eich mir erlaubt einen Artikel zuschreiben und es dort noch etwas weiter auszuführen.

Link zum Artikel: http://www.michael-puff.de/Developer.../HOMEDIR.shtml

Über Kritik und Anregungen würde ich mich freuen.
Ein Teil meines Codes würde euch verunsichern.
 
Chewie

 
Turbo Delphi für Win32
 
#41
  Alt 22. Sep 2005, 18:19
Zitat von mschaefer:
Tja klingt gut, aber die Tücke liegt nahe. Wenn ich ein Programm habe, welches Standartmäßig für alle User laufen soll, und die Daten liegen im speziellen Userverzeichnis, dann kann ich das Ding ja jedesmal installieren -> Monotonie ind er Südsee...
Erstens musst du das Ding nicht jedesmal installieren, nur die Anwenderdaten sind pro Anwender verschieden. Und sollten alle Benutzer des Rechners die gleichen Daten benötigen, gibt es immer noch das "All Users"-Verzeichnis.
Und nebenbei, welches Programm läuft denn wie eine Standart
Martin Leim
  Mit Zitat antworten Zitat
Sebastian Nintemann
 
#42
  Alt 22. Sep 2005, 18:42
Also mich wundert, dass es so viele Einwände gibt...
Seit ich standardmäßig ein Benutzerkonto ohne Administratorrechte verwende merke ich, dass viele Software so einfach nicht funktioniert. Vorher hatte ich Winamp für ein gutes Stück Software gehalten. Ich musste feststellen, dass es ohne Adminrechte aus dem von Luckie genannten Grund schlichtweg nicht funktioniert. Es friert einfach ein. Das ist doch wohl inakzeptabel! Sicherlich gibt es Workarounds mit friemelei, aber soweit kommts noch, dass ich um ein Programm zu nutzen mein schönes System kaputtfriemlele. Ich finde es sollte eben nicht jedem Programmierer überlassen werden, wie er das Problem handhabt. Der %HOMEDIR% Ordner ist dafür vorgesehen, der Programme Ordner ist nicht dafür vorgesehen, basta, auch wenn es Argumente dagegen gibt. Als Benutzer ohne Adminrechte ärgere ich mich immer wieder darüber, einige Programme nicht nutzen zu können.
Das Argument, dass es praktisch ist, kleinere Tools in einem Ordner zu haben kann ich nachvollziehen. Dann muss es dieses entsprechende Programm aber auch als Archiv ohne Installer zum Download geben, da nur so klar ersichtig ist, was wo landet. 7zip ist da ein schönes Beispiel. Oder MirandaIM, wobei das auch in das %HOMEDIR% schreibt wenn mehrere Benutzer es nutzen wollen.

Viele Grüße,
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#43
  Alt 22. Sep 2005, 19:50
Hi,

also gründsätzlich bin ich auch dafür, dass Programme ihre Daten im Anwendungsaten-Ordner sicher sollten, obwohl ich auch mit solchen Rechten arbeite, die ein Schreiben im Programmverzeichnis erlauben.
Das machen heutzutage noch erstaunlich viele Programme so (einige meiner eigenen mit eingeschlossen), eben auch aus den genannten Gründen. Wenn es sich um ein kleines Tool handelt, kann ich da wohl noch drüber hinwegsehen, bei größeren Programmen erwarte ich einen ordnungemäßen Umgang mit einem Multi-User Betriebssystem.
Die Idee, wie die eingeschränkten Rechte bei Vista umgesetzt werden sollen, sind bei gute Implementierung auch nicht schlecht: Zugriffe auf den Windows Ordner zB werden auf den User-Ordner umgeleitet. Wie gut das jedoch im Endeffekt funktioniert, muss sich noch zeigen.

Just my 2 cents.

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

 
Delphi 2007 Professional
 
#44
  Alt 22. Sep 2005, 20:01
Wenn jedes Programm seine Daten im HomeDir speichert, bringt das aber auch die Gefahr mit sich, dass eventuell Konflikte zu bestehenden Datein aufkommen können. Speicher ich hingegen meine Dateien im Installationsverzeichnis, ist dies kein Problem.

Ich handhabe es zur Zeit so. Mit den nötigen Rechten werden meine Dateien, eigentlich ausschliesslich INI Dateien, im Intallationsverzeichnis gesichert. Schlägt dies fehl, so nehme ich auch das Heimverz. Naja, ist aber sicherlich auch nicht optimal. Besser wäre sicher die Registry.

Aber da spielt sich mir doch noch ne neue Frage auf. User spezifische Daten könnte man ja problemlos im HKCU Ast der Registry unterbringen. Aber was ist mit Rechnerspezifischen Daten. Denn der HCLM Ast ist prinzipiell für normale User zum Schreiben gesperrt, ebenso c:\Dokuemente und Einstellungen\All Users. Also wohin mit den Daten, damit ich sicher sein kann, dass das Schreiben auch funktioniert.
Tom Peiffer
  Mit Zitat antworten Zitat
NicoDE
 
#45
  Alt 22. Sep 2005, 21:54
Zitat von Jelly:
Wenn jedes Programm seine Daten im HomeDir speichert, bringt das aber auch die Gefahr mit sich, dass eventuell Konflikte zu bestehenden Datein aufkommen können. Speicher ich hingegen meine Dateien im Installationsverzeichnis, ist dies kein Problem.
Hier geht es um benutzerspezifische Daten. Das Installationsverzeichnis ist praktisch für globale Einstellungen (die üblicherweise von Hauptbenuzern und Administratoren vorgenommen werden) - dort haben aber die Daten des Benutzers nichts zu suchen. Es geht also eher darum die Art der Konfigurationsmöglichkeiten sauber in benutzerbezogen und global zu unterscheiden und am jeweils passenden Ort zu speichern.
Falls ein Programm grundsätzlich nur im eigenen Verzeichnis arbeiten möchte, impliziert man, dass jeder Benutzer eine eigene Kopie installieren müsste um damit arbeiten können (es gibt genug Programme die nicht auf Mehrbenutzersysteme ausgelegt sind - beste Beispiel OpenOffice (und das ist nicht gerade 'klein')).
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

 
Delphi 2007 Professional
 
#46
  Alt 22. Sep 2005, 21:57
Naja, auch rechnerspezifische Daten müssen manchmal von normalen Usern gespeichert werden. Wie handhabt man denn das am Besten.
Tom Peiffer
  Mit Zitat antworten Zitat
NicoDE
 
#47
  Alt 22. Sep 2005, 22:02
Zitat von Jelly:
Naja, auch rechnerspezifische Daten müssen manchmal von normalen Usern gespeichert werden. Wie handhabt man denn das am Besten.
Über die Rechteverwaltung des Betriebsystems (sprich: ein Hauptbenutzer/Administrator muss entscheiden, dass normale Benutzer die Datei bearbeiten dürfen).
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber

 
Delphi XE Professional
 
#48
  Alt 22. Sep 2005, 23:43
Hi!

Hoffe, es wurde noch nicht erwähnt:

Ich kopiere (man beachte: NICHT installiere) also ein Programm. Dann geh ich davon aus, dass ich es los bin, wenn ich den Ordner wieder lösche - zumal es ja auch kein uninstall gibt...
Allerdings ruhen fröhlich Daten im HomeDir und müllen es mir zu.

Was ist damit?

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Brüggendiek

 
Delphi 5 Standard
 
#49
  Alt 23. Sep 2005, 03:39
Hallo!

Zitat von fkerber:
Ich kopiere (man beachte: NICHT installiere) also ein Programm. Dann geh ich davon aus, dass ich es los bin, wenn ich den Ordner wieder lösche - zumal es ja auch kein uninstall gibt...
Allerdings ruhen fröhlich Daten im HomeDir und müllen es mir zu.
Tjaaa - das passiert normalerweise auch mit installierter Software - oder hangeln die sich beim Deinstallieren durch alle Homedirs und werfen ihre Dateien raus? Dasselbe passiert mit der Registry - ist da HKCU der übrigen User überhaupt zugänglich?

Im Gegensatz zu Registry-Einträgen sind Dateien im Homedir allerdings harmlos - die paar Byte (bei NTFS sind die Dateien klein) spielen ja bei Plattengrößen von über 100GByte kaum noch eine Rolle. Außerdem verlangsamen sie das System nicht (im Gegensatz zu Registry-Müll).

Allerdings wurde ein Aspekt bisher nicht angesprochen:
Zum Installieren von Programmen braucht man Administrator-Rechte, denn der Deinstallations-Eintrag muß ja in der Registry unter HKLM stehen. Zum Kopieren eines nicht installationspflichtigen Programmes braucht man keine Administrator-Rechte, denn irgendwo ("Eigene Dateien") hat jeder Benutzer Schreibrechte und darf normalerweise auch Ordner anlegen. Dann hat der das Programm kopierende eingeschränkte Nutzer auch Schreibrechte im Programm-Ordner (er hat ihn ja selber angelegt).

Nebenbei: Ich rege mich immer wahnsinnig auf, wenn beim Installieren das nach "C:\Programme" gehen soll. Bei mir heißt der Programm-Ordner "C:\SOFT" - und ich sortiere darin nochmal nach gekauften, Freeware, eigenen Programmen etc.

Und dann war da noch ein Security-Analyser aus zweifelhafter Quelle (irgendwas mit Winzig und Weich ). Das Ding läuft prinzipbedingt nur mit Administrator-Rechten, trägt sich aber in Startmenü und Desktop unter "All Users" ein

Gruß

Dietmar Brüggendiek
Dietmar Brüggendiek
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

 
Delphi 2006 Professional
 
#50
  Alt 23. Sep 2005, 07:39
Hai ihr,

um auch mal einen Beitrag zu leisen

Ich mache das ganz einfach so:
Wenn es im Verzeichniss der Exe eine INI für das Programm gibt und in dieser in einem bestimmten Abschnitt ein Pfad zu einem Datenverzeichniss steht wird dieser verwendet. Wenn dieser Eintrag nicht vorhanden (oder leer) ist wird das APPDIR verwendet.
Dadurch hat der Anwender die Möglichkeit zu bestimmen ob die Daten an einer von ihm bestimmten stelle stehen sollen.

Den Pfad zu dem Datenverzeichniss speichere ich dann einfach in einer globalen Variabel.
Delphi-Quellcode:
const
  Programmname = 'Test';

var
  AppDir: string;

procedure TDataModule1.ProgrammInit;
var
  IniFile: string;
  myIni: TIniFile;
begin
  IniFile := ChangeFileExt(ParamStr(0), '.ini'); // Ininame = Exename
  AppDir := '';
  myIni := TIniFile.Create(IniFile);
  try
    AppDir := myIni.ReadString('programm', 'appdir', '');
  finally
    myIni.Free;
  end;
  if (AppDir = '') then
  begin
    AppDir := GetShellFolder(CSIDL_APPDATA);
    AppDir := AppDir + 'Sharky\' + Programmname;
  end;
  AppDir := IncludeTrailingBackslash(AppDir);
end;

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  ProgrammIni;
end;
Die Ini:
Code:
[programm]
;datadir = c:\test
Stephan B.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 9   « Erste     345 67     Letzte » 

Themen-Optionen Tutorial durchsuchen
Tutorial durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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