![]() |
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; ![]() ![]() |
Re: Speicherorte unter Windows
Programmdaten, wie Datenbanken und andere größere Datenmengen, kommen unter DokumenteEinstellungne\<Benutzer>\Anwendungsdaten\ <Programmname>
rein. Dateien, die der Benutzer verwalten will, kommen nach Eigene Dateien, wobei man hier nicht darauf bestehen kann, dass die Daten dann auch noch da sind. |
Re: Speicherorte unter Windows
Zitat:
|
Re: Speicherorte unter Windows
"All Users" ist ja auch nur eine Form von "Benutzername", siehe mein Post darüber ;)
|
Re: Speicherorte unter Windows
Zitat:
Also Dokumente und Einstellungen\All Users\Lokale Einstellungen\Anwendungsdaten find ich auch ideal, aber auf WinXP ist das hier nur mit Adminrechten beschreibbar (Neuinstallation von winXP in eine VMWare). Das ist auch das was der Windows Installer rausgibt. Oder meinst du wirklich All Users\Anwendungsdaten? Das gibts hier nämlich auch nochmal. Zusammenfassend könnte ich also sagen die einzige Möglichekeit dieses doch recht "alltägliche" Problem zu lösen wäre wärend der Installation die Daten nach ...\All Users\Lokale Einstellungen\Hersteller\Prgname zu packen, einen Schlüssel unter HKLM\Software erstellen und dann hergehen und einfach für das Verzeichnis und den Key die Rechte für "Jeder" zu setzen (READ, WRITE, usw..) Hab ich das richtig verstanden? - Dann werd ich mal das Büro verlassen, auf die Straße gehen und lautstark über Windows lachen. ;) Aber eine andere Sache: angenommen "Jeder" hätte Zugriff auf HKLM/Software/Hersteller und ein eingeschränkter Benutzer speichert übers Programm Daten darin ab - z.b. die angesprochenen Registrierungsinfos. Dann würde das wohl unter WinXP funktionieren. Aber Vista tunnelt das ganze doch dann wieder, ganz egal ob der Zugriff hat oder nicht, denn laut einigen Seiten ist der Zugriff auf HKLM generell dicht für Non-Admins. |
Re: Speicherorte unter Windows
All Users\Lokale Einstellungen\Anwendungsdaten ist für wirklich lokales, hardwarebezogenes (Windows legt dort z.B. brennprogrammspezifisches ab, weil Brenner ja durchaus von Rechner zu Rechner unterschiedlich sein können).
All Users\Anwendungsdaten wird in Domänen zusammen mit dem Rest des Profils im Netz abgelegt. Wenn Du also Domänen-Benutzern nicht aus einem bestimmten Grunde ein Roaming mit den Daten verweigern willst, solltest Du zweimal überlegen, ob Du Lokale Einstellungen verwenden willst. (soviel zumindest mein Verständnis von "Lokale Einstellungen") Ansonsten: ich wüsste ehrlich gesagt nicht, welche Konfigurationseinstellung, die JEDER Benutzer manipulieren darf, überhaupt einen Sinn in HKLM hätte. Gibt wenig nervigeres als andere Benutzer, die einem ständig die bevorzugten Einstellungen verstellen. Und die wenigen, die ein Grund dazu haben, sind eh Administrator oder Power User ;) |
Re: Speicherorte unter Windows
OK, also Anwendungsdaten direkt unter All Users hab ich grad nochmal unter XP ausprobiert - das funktioniert wunderbar als eingeschränkter Benutzer.
Ich nehm mal an das ist unter Vista immer noch so :) Damit wäre die Sache der Datenspeicherung mal abgehakt :thumb: Bleibt nur noch die Sache mit den Schlüsseln unter HKLM. Wird das unter Vista generell virtualisiert? Oder Schaltet sich die Virtualisierung ab, sobald ein Benutzer auf einen Unterschlüssel von HKLM Schreibzugriff hat? Es wundert mich doch schon ein bisschen, dass es in der Registry keinen offensichtlichen Schlüssel gibt der sowas ermöglicht :( |
Re: Speicherorte unter Windows
Auch in dr Registry gibt es entsprechende Schlüssel. Öffne sie doch einfach mal mit dem Registryeditor und guck dir die Hives mal an. :?
Und nein unter Vista wird nichts generell virtualiisert. das hngt zum einem davon ab, ob die Virtualisierung aktiviert ist und mit welchen rechte das Programm ausgeführt wird. Ein Administrator kann unter Vista genauso in HKLM schreiben, wie unter allen anderen NT Systemen. Wenn er das nicht könnte, wozu wäre dann der Schlüssel gut bzw. sichtbar? |
Re: Speicherorte unter Windows
Jau, der Admin darf das natürlich. Ich meinte auch eher dass der Zugriff von Non-Admins auf HKLM generell getunnelt wird.
Und die Registry hab ich mir schon oft genug angesehen, aber finde einfach keinen Schlüssel dafür.
|
Re: Speicherorte unter Windows
Zitat:
Zitat:
Zitat:
...:cat:... |
Re: Speicherorte unter Windows
Zitat:
Ich will doch nur wissen was passiert, wenn ich als Admin sagen wir mal den Schlüssel HKLM\FooBar erstelle und "Jeder" sämtliche Berechtigungen gebe. Ein eingeschrhänkter Benutzer, der darauf zugreifen will - darf der das oder greift da die Virtualisierungsregel "Wer auf HKLM zugreift und kein Admin ist, dessen Anfrage wird umgebogen?" |
Re: Speicherorte unter Windows
welche Benutzer sollen denn dort in AllUsers speichern dürfen?
Hmm komisch, bei mir dürfen Hauptbenutzer auch in den AllUsersOrdner Daten erstellen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 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