![]() |
Mal wieder das nervige Thema Speicherorte
Hallo zusammen,
es wird hier zwar ständig durchgekaut, aber irgendwie bin ich mir immer noch nicht sicher was jetzt wirklich richtig ist. Ich habe hier schon mehrer Threads verfolgt und versucht diese Entscheidung mit den Speicherorten auch für mich zu übernehmen. Nachdem ich mit viel Mühe und Kleinarbeit mein Programm umgebaut habe, treten aber immer noch Fehler beim Speichern in einer einfachen INI Datei auf. Die INI Datei habe ich in folgendem Verzeichnis gespeichert. Betreibssystem Windows Vista C:\ProgrammData\hu\inf\NetCon.ini Bei XP hatte ich die mit dem selben Init-String
Delphi-Quellcode:
in folgedem Verzeichnis...
const
strAppDataDir = '\HU\inf\'; .... var AppDataDir : string; sMessage : String; begin try AppDataDir := GetSpecialFolder(CSIDL_COMMON_APPDATA) + strAppDataDir; C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\hu\inf\NetConf.ini Entweder, habe ich immer da noch was falsch verstanden oder irgendwas falsch gemacht. Weil ich in dem Verzeichnis unter Vista manchmal speichern kann und manchmal nicht. Ich bin aber immer als Admin angemeldet. Und es müsste ja in dem Pfad auch als User gehen. ODER? Gruß Jens |
Re: Mal wieder das nervige Thema Speicherorte
Überprüf das mal in deinen Sourcen:
C:\ProgrammData\hu\inf\NetCon.ini C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\hu\inf\NetConf.ini |
Re: Mal wieder das nervige Thema Speicherorte
Der Pfad stimmt. Ich weiß nicht wo das Problem liegt. Seltsamer weiße tritt das Problem auch nicht immer auf. Ich muss das jetzt noch mal prüfen. Ich kann die Datei z.B. auch nicht von Hand ändern. Das heitßt ich muss dafür folgendes machen.
Datei Öffnen Datei Ändern Datei am selben Ort unter anderem Namen speichern Orginal Datei löschen Geänderte Datei wieder in Original Namen ändern Jetzige Datei Öffnen Datei wieder Ändern Datei Speichern geht mit Orginal Namen. :gruebel: Laptop AUS -> Laptop AN -> Problem wie eben erläutert Gruß Jens |
Re: Mal wieder das nervige Thema Speicherorte
Zitat:
|
Re: Mal wieder das nervige Thema Speicherorte
Sorry, ist mir nicht aufgefallen. Ist aber nur ein TipFehler. Hatte das von Hand hier eingetragen.
Gruß Jens |
Re: Mal wieder das nervige Thema Speicherorte
Ist "C:\ProgrammData" auch ein Tippfehler?
|
Re: Mal wieder das nervige Thema Speicherorte
Jupp :thumb:
|
Re: Mal wieder das nervige Thema Speicherorte
Wo kommt denn GetSpecialFolder her? Kann ich bei mir so nicht finden...
|
Re: Mal wieder das nervige Thema Speicherorte
Ist folgende procedure.
Das Ergebnis des Strings stimmt auch. Habe ich hundert mal probiert.
Delphi-Quellcode:
Gruß Jens
{Speicherpfad ermitteln um Speicherziel der User Einstellungen festzulegen}
function GetSpecialFolder (aFolder: Integer): String; var pIdL: PItemIDList; Path: Array [0..Max_Path] of Char; Allocator: IMalloc; begin // ItemIdList für den Ordner holen SHGetSpecialFolderLocation (0, aFolder, pIdL); // ItemIdList in String umwandeln lassen SHGetPathFromIDList (pIDL, Path); // Speicher wieder freigeben if Succeeded (SHGetMalloc (Allocator)) then begin Allocator.Free (pIdL); {$IFDEF VER100} Allocator.Release; {$ENDIF} end; Result := Path; end; |
Re: Mal wieder das nervige Thema Speicherorte
Moin Jens,
Zitat:
Unter Windows Vista bzw. 7 habe ich noch nicht nachgesehen. Schau doch einfach mal im Reiter "Sicherheit" welche Rechte ein Benutzer hat. |
Re: Mal wieder das nervige Thema Speicherorte
Zitat:
|
Re: Mal wieder das nervige Thema Speicherorte
Moin Jens,
schau Dir einfach mal die Berechtigungen auf die Verzeichnisse bei einer Standardinstallation an. Bei XP sollte ein normaler Benutzer im Verzeichnis %USERPROFILE%\Anwendungsdaten Schreibrechte haben. Das das im All Users Profil nicht der Fall ist, ist auch logisch, damit sich verschiedene Benutzer nicht gegenseitig die Einstellungen zersemmeln können. Als Admin solltest Du natürlich überall Schreibrechte haben (mal abgesehen von System Volume Information), soweit Dir nicht die UAC dazwischenhaut. Um Grundeinstellungen zu verteilen, die für jeden User erst einmal gleich sein sollen, dann aber von jedem individuell geändert werden können, könnte man diese im Default User-Profil ablegen. Dann würde jeder neue User die gleichen Grundeinstellungen bekommen. Allgemein: In das All Users-Profil gehören Daten, die für alle gleich sein sollen, aber, normaler Weise, nicht geändert werden. In das User-Profil gehören Daten, die nur für diese User gelten sollen, und geändert werden dürfen. Im Default-User-Profil können Daten hinterlegt werden, mit denen ein User-Profil initialisiert wird, wenn sich jemand das erste mal am System anmeldet. |
Re: Mal wieder das nervige Thema Speicherorte
Hallo,
danke für die Auflistung, die für mich (endlich) etwas Klarheit bringt, aber eine Frage bleibt für mich dennoch offen: Wo kommen Daten hin, die für alle User gelten sollen und geändert werden? Ich denke da z. B. an eine Datenbank, die die Stammdaten enthält, die sich auch hin und wieder ändern. Ich hab diese Daten bisher (unter XP) in All Users\Anwendungsdaten\<Programmname>\ gespeichert. Im Userverzeichnis macht es keinen Sinn, weil es nur eine Datenbank geben soll, und Schreibrechte zum Ändern der Datenbank brauchen die Anwender schließlich auch. Gruß Frank |
Re: Mal wieder das nervige Thema Speicherorte
Moin Frank,
Zitat:
Wenn es sich um Daten handelt, die nur von der Anwendung genutzt, aber nicht im Zuge der Nutzung geändert werden sollen, sollten sie unter All Users, oder auf einem Netzwerklaufwerk liegen. Änderungen solcher Daten sollten nur durch administrative Updates erfolgen. Es muss ja, ggf., auch jemand die Übersicht haben, dass alle mit den gleichen Daten arbeiten, falls die Software auf mehreren Rechner genutzt wird. Bei Daten, die von der Anwendung genutzt und geändert werden sollen, und bei denen ein Netzwerklaufwerk oder ein entsprechender Server nicht in Frage kommt (warum auch immer), bleibt, meiner Ansicht nach, nichts anderes übrig, als sie unter All Users\Anwendungsdaten zu legen, und das Verzeichnis mit entsprechenden Rechten zu versehen. |
Re: Mal wieder das nervige Thema Speicherorte
Hallo Christian,
das von Dir angesprochene Verfahren klingt sinnvoll, danke für die Klarstellung. Gruß Frank |
Re: Mal wieder das nervige Thema Speicherorte
Zitat:
Das ist auch richtig so, weil ich nicht mehrer Datenbanken will. Also erstmal nach der Installation darein und eventuell die Datenbank auf eine Netzlaufwerk verlagern. Dann die NetConf.ini mit Admin Rechten bearbeiten und fertig. Gut ist soweit OK. Kann ich mit leben und ich denke der Kunde auch. Aber warum habe ich das Problem trotz Admin Rechte. Seltsamer weiße hat es jetzt gerade mal funktioniert. Ich kann also nicht genau definieren, wann ich die Datei ändern kann und wann nicht. Irgendeine Idee wo ich in den Vista Einstellungen noch suchen kann. Gruß Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz