AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zugriffsrechte von Dateien ändern

Ein Thema von naht2k6 · begonnen am 21. Jul 2015 · letzter Beitrag vom 22. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2   
naht2k6

Registriert seit: 23. Apr 2015
11 Beiträge
 
#1

Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 14:58
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.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.752 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 15:09
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
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.679 Beiträge
 
Delphi 5 Professional
 
#3

AW: Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 15:28
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 15:48
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 15:59
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;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.288 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zugriffsrechte von Dateien ändern

  Alt 21. Jul 2015, 16:46
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?!
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
naht2k6

Registriert seit: 23. Apr 2015
11 Beiträge
 
#7

AW: Zugriffsrechte von Dateien ändern

  Alt 22. Jul 2015, 10:31
Danke für die Anteilnahme. Eure Bedenken nehme ich zur Kenntniss.

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.

Über kurz oder lang wird das Problem hoffentlich mit dem Setup gelößt.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.123 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Zugriffsrechte von Dateien ändern

  Alt 22. Jul 2015, 11:24
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
  Mit Zitat antworten Zitat
naht2k6

Registriert seit: 23. Apr 2015
11 Beiträge
 
#9

AW: Zugriffsrechte von Dateien ändern

  Alt 22. Jul 2015, 11:40
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.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Zugriffsrechte von Dateien ändern

  Alt 22. Jul 2015, 11:47
Nur als Hinweis: Hier die genau gleiche Frage auf Stackoverflow
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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