Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Zugriffsrechte von Dateien ändern (https://www.delphipraxis.net/185951-zugriffsrechte-von-dateien-aendern.html)

naht2k6 21. Jul 2015 13:58

Zugriffsrechte von Dateien ändern
 
Hi,

ich hoffe ich bin hier richtig bei "Win32/64 API".
Also, folgendes ist mein Problem.

Ich schreibe an einem Programm, dass gern Einstellungen in einer Ini-Datei speichert.
Ich würde gern diese Ini-Datei im Windows Common_Appdata_Folder lesen und schreiben. Sinnvoller Weise soll diese Datei natürlich deswegen in den Common_Appdata_Folder, weil ich mit allen vorhanden Windows Usern darauf zugreifen können möchte.

Eigentlich alles ganz easy und vor allem standart.
Nun ist es aber so, dass ich die betreffenden Dateien nicht per Setup installieren kann, sondern sie beim ersten Start des Programms neu erstellen muss.
Wenn ich nun das Programm mit Administratorrechten installiere, und auch mit genau diesem Nutzer zum ersten mal starte, erstellt der die Datei mit Zugriffsrechten, die sehr eingeschränkt sind, und die ich vor allem nicht beeinflussen kann. Wenn ich nun das Programm mit einem anderen Nutzer starte, kann die Datei nicht bearbeitet werden.

Die Datei in den User_Appdata_Folder zu packen ist leider nicht praktikabel!

Viel zu lange Rede, recht kurzer Sinn. Ich habe es immerhin schon geschafft, die Zugriffsrechte von Dateien zu ändern. Ich kann also nach dem erstellen der Datei die Zugriffsrechte beispielsweise so ändern, dass "Jeder" vollen Zugriff hat. Das habe ich unter Verwendung dieser kleinen Hilfe geschafft: http://www.delphipraxis.net/30695-pe...e-aendern.html

Mein Problem ist nun, dass ich das unabhängig von der Region tun muss, in der der Computer steht. Die Gruppennamen für Zugriffsrechte haben so schön regionale Namen, wie "User" / "Bentzer", "Jeder" / "Everybody", usw. Das ganze natürlich in allen möglichen Sprachen.
Mir fehlt also die Möglichkeit, die Datei für die allumfassende Gruppe "Jeder" unabhängig von der Sprache schreibbar zu machen.

Kennt wer eine tolle Variable, der die lokale Gruppe "Jeder" beschreibt. Oder gibt es eine Möglichkeit, sich den String zu holen. Oder hat wer eine ganz andere Idee?

Dank schon mal.

Klaus01 21. Jul 2015 14:09

AW: Zugriffsrechte von Dateien ändern
 
Hallo,

kannst Du nicht eine Dummy-Ini Datei vom Setup Programm installieren lassen.
Das hätte auch den Vorteil das die Ini-Datei bei ein Deinstalltion mit entfernt wird.

Grüße
Klaus

Dalai 21. Jul 2015 14:28

AW: Zugriffsrechte von Dateien ändern
 
Also erstens: Zugriffsrechte öffnet man nur so weit, wie es unbedingt notwendig ist, nicht so weit wie es geht. "Jeder" mit Vollzugriff auszustatten, ist absoluter Unsinn! Ich habe mich bereits mehrfach hier im Forum dazu ausgelassen, daher spare ich mir das an dieser Stelle; trotzdem kann man das nicht oft genug erwähnen, weil dieser Nonsens seit Jahren durchs Netz geistert und von "allen" (oft gedankenlos) benutzt wird.

Zweitens: Jeder Benutzer und jede Gruppe hat einen sogenannten SID (Security Identifier). Diese sind eineindeutig für jedes System. Diese Benutzer(gruppen), auf die du hinaus willst, haben ebenfalls einen SID, diese sind immer gleich. Von MS werden die als Well-known SIDs bezeichnet. Das bedeutet, du solltest diese SIDs benutzen, um die Zugriffsrechte zu setzen, denn dann bist du unabhängig von der Sprache des installierten OS.

MfG Dalai

p80286 21. Jul 2015 14:48

AW: Zugriffsrechte von Dateien ändern
 
Dalai's Ausführungen ist kaum etwas hinzu zu fügen, außer zumindestens mein Rechner hat von einem Admin eine solche Konfiguration bekommen, daß ich als Benutzer problemlos ein Verzeichnis unter "ProgramData" anlegen kann und ich kann dort auch problemlos schreiben. Dies gilt ebenso für alle anderen Benutzer, die sich auf dem Rechner einloggen können.
Sollte dies nicht möglich sein, besteht die entfernte Möglichkeit, daß da sich jemand etwas bei gedacht hat. In solchen Fällen wäre es ein Gebot der Höflichkeit, den Benutzer darauf hinzuweisen, daß das Programm ein Verzeichnis/Datei benötigt und er diese doch bitte anlegen soll, bzw. seinen Admin informieren soll.

Programmierer/Softwarevertreiber die mit der Brechstange versuchen ihre Vorstellungen durchzusetzen machen sich auf Dauer mit solchen Aktionen nicht sehr beliebt.

Gruß
K-H

hathor 21. Jul 2015 14:59

AW: Zugriffsrechte von Dateien ändern
 
Getestet mit XE7, WIN8.1 - Everyone wird überall verstanden.

Delphi-Quellcode:
// uses WinApi.ACCCTRL, WinApi.ACLAPI,
procedure TForm1.Button1Click(Sender: TObject);
var
  TmpString: String;
  pSD : Pointer;
  NewDacl, OldDacl: PACl;
  EA: array [0..5] of EXPLICIT_ACCESS;
  ret : Cardinal;
begin
ret:= 1;
  TmpString := 'F:\TEST.txt';
  GetNamedSecurityInfo(PChar(TmpString), SE_FILE_OBJECT,
                DACL_SECURITY_INFORMATION, nil, nil, @OldDacl, nil, pSD);
  BuildExplicitAccessWithName(@EA, PChar('Everyone'), GENERIC_ALL,
                GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);
  SetEntriesInAcl(1, @EA, OldDacl, NewDacl);
  ret:= SetNamedSecurityInfo(PChar(TmpString), SE_FILE_OBJECT,
                DACL_SECURITY_INFORMATION, nil, nil, NewDacl, nil);

  if ret= ERROR_SUCCESS then
  ShowMessage('Bei diesem Objekt wurden keine Objekttypen zugeordnet.'+#13#10+
            'Achtung: Dies ist ein mögliches Sicherheitsrisiko, weil jeder,'+#13#10+
            'der Zugriff auf dieses Objekt hat, dieses besitzen kann.'+#13#10+
            'Der Besitzer dieses Objekts sollte so bald wie möglich'+#13#10+
            'Berechtigungen zuordnen.');
end;

jaenicke 21. Jul 2015 15:46

AW: Zugriffsrechte von Dateien ändern
 
Man sollte damit allerdings vorsichtig sein. Solche Aktionen werden von einigen Virenscannern erkannt und Programme entsprechend per Verhaltensanalyse als Virus oder "potentiell unterwünschtes Programm" eingestuft. (Das haben wir selbst schon gehabt, in dem Fall bei den Zugriffsrechten auf einen Registry-Schlüssel.) Ausnahme sind dabei Setups, dabei werden solche Aktionen offenbar eher erwartet.

Deshalb haben wir dies mittlerweile auch anders gelöst. Bei uns war das nicht so einfach, aber gerade bei Einstellungen ist es in der Regel doch ohnehin nicht erwünscht, dass ein Benutzer die Einstellungen des anderen Benutzers kaputt macht?!

naht2k6 22. Jul 2015 09:31

AW: Zugriffsrechte von Dateien ändern
 
Danke für die Anteilnahme. Eure Bedenken nehme ich zur Kenntniss. :D

Zuerstmal. Recht haste @Dalai. Ich versuche "Jeder" zu vermeiden. Aber um den Fakt, dass jeder Benutzer auf dem PC Schreibrechte auf dieser Datei braucht, komm ich nicht rum. Es handelt sich um eine Software zum betreiben eines recht komplexen Systems. Verschiedene Einstellungen für verschiedene Nutzer würden zu einem extremen Durcheinander führen.

@P80286 Der ProgramData Ordner ist ja genau für sowas da. Wenn ich per Hand dort eine Datei erstelle, hat diese auch großzügige Zugriffrechte.
Nur wenn ich sie aus dem Programm erstelle, taucht das Problem auf. Ich habe nicht vor die Brechstange rauszuholen. Höchstens ganz kurz. :D

Über kurz oder lang wird das Problem hoffentlich mit dem Setup gelößt.

Mavarik 22. Jul 2015 10:24

AW: Zugriffsrechte von Dateien ändern
 
Zitat:

Zitat von naht2k6 (Beitrag 1309399)
Wenn ich nun das Programm mit Administratorrechten installiere, und auch mit genau diesem Nutzer zum ersten mal starte, erstellt der die Datei mit Zugriffsrechten, die sehr eingeschränkt sind, und die ich vor allem nicht beeinflussen kann. Wenn ich nun das Programm mit einem anderen Nutzer starte, kann die Datei nicht bearbeitet werden.

Übersehe ich gerade etwas? Wenn Du für die Installation Admin-Rechte brauchst... Fein...(Wofür auch immer soll mal egal sein)

Aber warum startest Du das Programm dann bei 1. mal mit Admin-Rechten?

Mavarik

naht2k6 22. Jul 2015 10:40

AW: Zugriffsrechte von Dateien ändern
 
Da steht weder, dass ich Adminrechte zur installation brauche, noch dass ich das Programm mit Adminrechten starte. Da steht auch nicht, dass ich das muss. ;)

Wenn ich als Nutzer mit Adminrechten angemeldet bin, heißt das ja nicht, dass jedes Programm automatisch mit Adminrechten ausgeführt wird.

Ich wollte nur nicht, dass die ersten Antworten lauten: "Probiers mal mit Adminrechten", oder so. Es war einfach ein Szenario.

Der schöne Günther 22. Jul 2015 10:47

AW: Zugriffsrechte von Dateien ändern
 
Nur als Hinweis: Hier die genau gleiche Frage auf Stackoverflow


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.
Seite 1 von 2  1 2      

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