![]() |
Speicherorte unter Windows
Hi,
ich hab da mal eine generelle Frage an alle Entwickler unter Windows. Gibt es irgendwo eine Liste in der sich klar ablesen lässt, in welchem Verzeichnis eine bestimmte Gruppe von Daten abgespeichert werden können? Ich hab viel unter Linux programmiert, ich weiß dass ich programmbezogene Einstellungen in /etc/ abspeichere und benutzerbezogene in ~/.prgname/. Zumindest würden mir viele zustimmen dass dieser Weg doch recht sauber ist. Unter Windows hab ich das Problem, dass ich zum einen programmbezogene Einstellungen hab die in der Registry gespeichert werden sollen sowie programmbezogene Daten die irgendwo auf der Festplatte gespeichert sollen. Da aber generell jeder User einer Windows Kiste lesenden und schreibenden Zugriff auf die Konfiguration sowie die Daten braucht, bin ich mittlerweile überfragt wohin damit. Als Beispiel mal die Konfigurationen: Ich dachte HKEY_LOCAL_MACHINE\Software wäre ideal, da alles andere benutzerbezogen ist. Jetzt merk ich dass unter Vista (UAC zeugs) der Zugriff virtualisiert und irgendo umgebogen wird. Da fliegt mir jetzt natürlich so ziemlich jedes System um die Ohren auf dem mehrere Admins, Hauptbenutzer und Eingeschränkte Benutzer tätig sind. Daten sind auch so eine Sache: C:\Dokumente und Einstellungen\All Users\ klingt ja genau nach dem was ich suche - dumm an der Sache ist nur dass eingeschränkte Benutzer da mal wieder keinen schreibenden Zugriff drauf haben. Bei einer Datenbankdatei die da drin lingt und von alles Usern benutzt werden soll sind da Fehlermeldungen natürlich vorprogrammiert. Ich würde dieses ganze Zeug gern mal richtig abspeichern... :wall: |
Re: Speicherorte unter Windows
Lies mal diesen
![]() |
Re: Speicherorte unter Windows
Zitat:
Aber wo man die Daten abspeichern soll steht da nicht. Der einzige Lösungsvorschlag der kam, war den Installer mit Adminrechten starten zu lassen (mach ich übrigens auch). Aber hinterher bringt mir das nichts mehr weil die Datenbank die bei der Installation abgelegt wird muss natürlich danach immer noch für "ALLE BENUTZER" schreibbar sein. Genauso wie die Registrierungsinfos die in der Registry abgelegt werden sollen... Wenn sich Benutzer A anmeldet, Programm startet und die Registrierungsinfos eintippt, dann braucht die auch der Benutzer B, und C und D. Kann nicht angehen dass ich einem Kunden mit 30 aktiven Systembenutzern beibringen muss, die Registrierungsinfo 30x einzutippen weil Vista die hintenrum tunnelt. |
Re: Speicherorte unter Windows
Benutzerübergreifende Einstellungen: HKLM / AllUsers
Benutzerspezifische Einstellungen: HKCU / Benutzerverzeichnis Und wenn das Programm mit Administratorenrechten läuft, dann wird da auch nichts umgebogen. Also Programm mit Adminrechten starten und die benutzerübergreifende Konfiguration machen und dann mit dem Programm als normaler Benutzer arbeiten. |
Re: Speicherorte unter Windows
Und wo sollen die ganzen Datenbankdateien hin? Formular-Dateien? Reports?
Und generell gesagt: Adminrechte kann man abhaken, z.b. kann ein Benutzer einen neuen Transferpfad angeben, der muss für alle anderen Benutzer gelten. Oder er kann sich endlich dazu entschließen die Registrierungsinfos einzutippen. Oder vielleicht den Organistaionsnamen abändern. Oder oder oder.. da werd ich erschossen wenn ich da jedesmal das Administrator-Passwort verlangen würde... Edit: und HKLM / AllUsers gibts bei mir nicht (winXP SP2) Darf man das anlegen? Ich denk mal nicht, denn wenn AllUsers besondere Rechte hätte wärs standardmäßig schon da. Und wenn doch, wie muss die Struktur darunter aussehen? AllUsers\Software\Hersteller\Produkt? |
Re: Speicherorte unter Windows
Ich glaube jetzt verstehst du wofuer "User, Gruppe, Alle" bei den Dateirechten von Unix gedacht sind. Es geht doch nichts ueber ein sinnvolles Design.
|
Re: Speicherorte unter Windows
Zitat:
2. Übereinstimmung. 3. Imho nur solange mein kein Manifest einbindet, danach klappt der schreibende Zugriff als Nicht-Admin einfach nicht mehr. Wenn dann unbedingt noch ein Platz in der Registry sein muss, kann man dort auch während der Installation die Rechte an einem einzelnen Schlüssel in HKLM anpassen (RegSetKeySecurity, ConvertStringSecurityDescriptorToSecurityDescripto r, etc.). Zitat:
Besser wars imho nur früher in Novell Netware gelöst ;) |
Re: Speicherorte unter Windows
Ich würde die Sachen irgendwo unter AllUsers speichern - und zwar in einem Verzeichnis, welches der Installer erstellt. Dieser gibt den Benutzern, die sie brauchen, auch entsprechende Rechte.
Bei Unix geht das ja genauso - /etc ist ja auch nicht schreibbar durch alle Benutzer, höchstens bestimmte Unterordner, die aber erstmal entsprechend "gechmoded" und "gechowned/"gechgrped" werden müssen. |
Re: Speicherorte unter Windows
Zitat:
Zitat:
|
Re: Speicherorte unter Windows
Nochmal im Detail Zugriff auf einen Pfad, der schon von Haus aus auch für eingeschränkte Benutzer verfügbar ist (wie ich im anderen Topic erwähnte "Hans Dampf", nur in Gruppe "User", darf dort schalten und walten).
Delphi-Quellcode:
Überhaupt keine Anpassung von Rechten etc. notwendig. Siehe auch
function SpecialDirectory(const iID: Integer): string;
// Needs: ShlObj on Delphi, WinExt on FPC var aPath : array[0..MAX_PATH] of Char; pilTemp: PItemIDList; begin try if SHGetSpecialFolderLocation(0, iID, pilTemp)=S_OK then begin if SHGetPathFromIDList(pilTemp, aPath) then begin Result := string(aPath); end else Result := ''; CoTaskMemFree(pilTemp); end else Result := ''; except Result := ''; end; end; const CSIDL_COMMON_APPDATA = $0023; var sPath: string; begin sPath := SpecialDirectory(CSIDL_COMMON_APPDATA); end; ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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-2025 by Thomas Breitkreuz