Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Zugriffsrechte in AppData (Vista) (https://www.delphipraxis.net/122476-zugriffsrechte-appdata-vista.html)

breakthesilence 16. Okt 2008 21:30


Zugriffsrechte in AppData (Vista)
 
Hallo,

ich habe ein Programm entwickelt dass in Zeiten der paradisischen XP-Zustande einfach alle Benutzer-Dateien im Programme-Verzeichnis abgelegt hat, doch mit der Umstellung auf Vista musste diesem Treiben natürlich ein Ende gesetzt werden und alle Dateien kamen kurzum in einen neuen Ordner in AppData. War auch (wegen den Kompatibilitätsdateien) zunächst kein Problem, doch jetzt haben wir voll auf Vistakompatibilität umgestellt und eine Manifestdatei integriert, mit dem Ergebnis, das auf einmal alle Nicht-Admin-User keinen Schreibzugriff mehr auf die Datenbankdatei im AppData-Verzeichnis haben.
Folglich wäre es sinnvoll, wenn das Programm unter einmaliger Anstrenung eines Admin-Accounts allen Benutzern Schreibrechte auf das Verzeichnis geben könnte. Ich habe dazu im Forum viel gesucht und auch einiges gefunden, jedoch nichts aus dem ich wirklich schlau geworden bin.

Wäre toll wenn mir jemand mal einen Ansatz dazu sagen könnte.

Viele Grüße
Johannes

Bernhard Geyer 16. Okt 2008 21:55

Re: Zugriffsrechte in AppData (Vista)
 
Zitat:

Zitat von breakthesilence
ich habe ein Programm entwickelt dass in Zeiten der paradisischen XP-Zustande einfach alle Benutzer-Dateien im Programme-Verzeichnis abgelegt hat

Dieser Ansatz hat genau die gleichen Probleme ab Windows NT. Einfach nur einen Benutzer nehmen der nur in der Gruppe "Benutzer" ist und nicht mehr "Hauptbenutzer". Schon kannst du nicht ins Programmverzeichnis schreiben.

Zitat:

Zitat von breakthesilence
... mit dem Ergebnis, das auf einmal alle Nicht-Admin-User keinen Schreibzugriff mehr auf die Datenbankdatei im AppData-Verzeichnis haben.

Welches AppData-Verzeichnis? Für einen bestimmten User oder bei "All Users"?

breakthesilence 16. Okt 2008 22:00

Re: Zugriffsrechte in AppData (Vista)
 
AppData (C:\ProgramData) von allen Benutzern, weil unter allen Benutzern die gleichen Dateien, Aktivierungsinformationen etc vorhanden sein sollen.

breakthesilence 19. Okt 2008 21:40

Re: Zugriffsrechte in AppData (Vista)
 
Folgende Neuerungen: Ich hab herausgefunden, dass Vista in dem ProgramData Verzeichnis grundsätzlichen allen Benutzern Schreibrechte gibt, aber eine vom Admin(oder anderem Benutzer) erstellte Datei lässt sich nicht von jeden Standardbenutzer ändern. Dies ist aber gewünscht. Ich habe jetzt mal mit der NTACL-Unit herumgespielt, mit der kann ich ja immerhin Rechte für einen bestimmten User erteilen. Weiß jemand wie ich damit allen Standardenutzern Rechte gebe? Aufrufe wie
Delphi-Quellcode:
FileACL.GrantAccessByName ('{Domäne}', 'Benutzer', DACL_MACRO_FILE_CHANGE, $3);
oder
Delphi-Quellcode:
FileACL.GrantAccessByName ('{Domäne}', 'Domänen-Benutzer', DACL_MACRO_FILE_CHANGE, $3);
zeigen leider keine Wirkung (auch wenn Vista den Standardbenutzer ja als Domöne/Benutzer bezeichnet).

Dezipaitor 19. Okt 2008 23:28

Re: Zugriffsrechte in AppData (Vista)
 
Ich verstehe garnicht was du genau machen willst!? Welchen Ordner willst du genau anpassen? Das gesamte AppData?
Du willst also, dass die Gruppe "Benutzer" Vollzugriff erhält? Würde ich nicht zwar nicht empfehlen und stattdessen nur bestimmte Benutzer hinzufügen, aber so geht's auch.
Ich kann GrantAccessByName nicht empfehlen, da hier Benutzernamen und nicht SIDs verwendet werden - die sind sprachabhängig.

So geht es mit der JWSCL:


btw: Kann dein Programm mehrfach gestartet werden unter verschiedenen Benutzern?

Luckie 20. Okt 2008 12:34

Re: Zugriffsrechte in AppData (Vista)
 
Zitat:

Zitat von breakthesilence
ich habe ein Programm entwickelt dass in Zeiten der paradisischen XP-Zustande einfach alle Benutzer-Dateien im Programme-Verzeichnis abgelegt hat

Um bei deiner Wortwahl zu beliben. Auch unter XP (2000 Und NT ebenso) konnte auch nur Gott ins Programmverzeichnis schreiben Adam und Eva konnten dies nicht. Aber auch wenn Adam und Eva es gekonnt hätten, hätte es sich aus anderen ründen verboten. Windows ist ein Mehrbenutzersystem und bei dir hätte Adam die Einstellungen von Eva überschrieben. Das ist dir nur nie aufgefallen, weil du a) immer als Gott unter Windows gearbeitet hast und b) kein anderer Benutzer auf deinem Rechner das Programm verwendet hat. Hättest du es gleich richtig gemacht, hättest du jetzt unter Vista keine Probleme damit.

breakthesilence 20. Okt 2008 19:27

Re: Zugriffsrechte in AppData (Vista)
 
Ja ich hab ja eingesehen dass meine am Anfang gewählte Lösung nich so das Wahre ist, und ich bin ja dabei das zu ändern.
Zum Thema Überschreiben: Das muss sogar so sein, da es eine zentrale Datenbankdatei ist, auf die mehrere User Zugriff haben sollen (aber nicht gleichzeitig).
Ich will übrigens nicht allen Benutzern Vollzugriff, sondern nur allen Benutzern Schreibrechte geben.

Ich habe das mit der JWSCL jetzt mal getestet, ich kann es auch compilern und ausführen, allerdings hat nachher "Jeder" laut Explorer "Spezialrechte" für das Verzeichnis, die nicht näher ausgeführt werden. Außerdem werden die Rechte nicht auf die drinnen liegenden Dateien vererbt (was notwendig ist). Kann mir da einer weiterhelfen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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