Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Windows 7 Rechte für C:\Users\Public (https://www.delphipraxis.net/172417-windows-7-rechte-fuer-c-%5Cusers%5Cpublic.html)

Andidreas 2. Jan 2013 16:23

Windows 7 Rechte für C:\Users\Public
 
Hallo zusammen,

ich Entwickle gerade ein Programm welches in unseren PLV Partnerbetrieben zum Einsatz kommen soll.
Ich möchte hier eine SQLite DB zum Einsatz bringen in der die Daten gespeichert werden die mein Programm benötigt.
Um zu vermeiden das diese Datei manipuliert wird, möchte ich diese Datei nicht im Programm Verzeichnis des Programmes ablegen.

Meine Idee war nun die Datei unter C:\Users\Public\ abzulegen.
Für dieses Verzeichnis müssten doch normalerweise alle User eines PCs Schreibrechte haben oder?

Dalai 2. Jan 2013 16:39

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Andidreas (Beitrag 1197379)
Um zu vermeiden das diese Datei manipuliert wird, möchte ich diese Datei nicht im Programm Verzeichnis des Programmes ablegen.

Meine Idee war nun die Datei unter C:\Users\Public\ abzulegen.

Um zu vermeiden, dass eine Datei deines Programms manipuliert wird, willst du sie da hinlegen, wo sie jeder schreiben (manipulieren) kann? Verstehe ich nicht.

Bedenke bitte, dass, sofern es sich um eine Software für den Unternehmenseinsatz handelt (so liest sich dein Eingangssatz), das Profil Public kein servergespeichertes Profil ist, also auch nicht auf irgendwelche Domain Controller synchronisiert wird.

Aber um deine Ausgangsfrage zu beantworten: Es sieht so aus, als hätte die "Well Known SID" namens "Interaktiv" Schreibrechte auf alle Unterverzeichnisse von Public.

MfG Dalai

p80286 2. Jan 2013 18:01

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Andidreas (Beitrag 1197379)
Um zu vermeiden das diese Datei manipuliert wird,..
Für dieses Verzeichnis müssten doch normalerweise alle User eines PCs Schreibrechte haben oder?

Da gehe ich mal davon aus, daß du Dich vergallopiert hast.

Unter XPkönntest Du
c:\dokuments and settings\all users\application data\Myappname\......
nutzen, und nichts spricht dagegen die alten Dateiattribute (Archiv/System/Hidden.....) zu nutzen.
ebenso könntest Du die ADS-Berechtigungen manipulieren, aber wofür soll es gut sein?

Gruß
K-H

Popov 2. Jan 2013 20:55

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Andidreas (Beitrag 1197379)
Um zu vermeiden das diese Datei manipuliert wird, möchte ich diese Datei nicht im Programm Verzeichnis des Programmes ablegen.

Ich gehe davon aus, dass du das Gegenteil meinst.

Also mit Windows 7 habe ich mich diesbezüglich noch nicht auseinandergesetzt, aber unter XP. Ich hab alles rauf und runter probiert und festgestellt, dass nichts geht. Es gibt keinen einzigen Standardort (ich nennt das jetzt mal so für Standardordner von Windows) in dem alle Benutzer eines Rechners (damit meine ich alle Benutzerkonten) alle gleiche Nutzungsrechte haben. Wenn, dann etwas eigenes, aber es gibt keinen echten Public Ordner. Oder wenn es nicht alle Konten haben müssen, dann unter Anwendungsdaten.

Morphie 3. Jan 2013 06:26

AW: Windows 7 Rechte für C:\Users\Public
 
Ich verstehe nicht, warum das immer so ein großes Thema ist...
Microsoft hat doch ganz deutlich gemacht, wo welche Daten abgespeichert werden sollen.

Dateien, die zur Lauffähigkeit des Programmes gehören (Exe, DLLs, ...) gehören in %ProgramFiles%\ProgramName
Daten, auf die das Programm von allen Benutzern aus zugreifen kann (Datenbanken, Konfigurationen, ...) gehören in %ProgramData%\ProgramName
Daten, die auf das Programm von nur einem bestimmten Benutzer aus zugreifen kann gehören in %AppData%\ProgramName

Für das Anlegen der Ordner und das Setzen der entsprechenden Rechte, ist normalerweise das Setup zuständig. Um das anschließende Löschen der Ordner ist der Uninstaller zuständig.

Popov 3. Jan 2013 07:12

AW: Windows 7 Rechte für C:\Users\Public
 
Das Problem ist der letzte Satz von Andidreas: "Für dieses Verzeichnis müssten doch normalerweise alle User eines PCs Schreibrechte haben oder?"

So wie ich es verstanden habe geht es drum eine Datei (Datenbank) so zu platzieren, dass sie von allen Usern eines Rechners von allen Konten genutzt werden kann. Und auch wenn es inzwischen paar Tage her ist wo ich mich selbst um das Problem bemüht habe, kann ich mich erinnern, dass es keinen Ort auf dem Rechner (bei NTFS) gibt, wo alle von Hause aus die nötigen Rechte hätten. Auf All Users mögen alle lesend zugreifen können, aber nicht schreibend, was wohl bei einer Datenbank seine Probleme mitbringen wird.

Ob Setup eine Möglichkeit bieten könnte, müsste man testen.

DeddyH 3. Jan 2013 07:18

AW: Windows 7 Rechte für C:\Users\Public
 
Z.B. InnoSetup kann das, siehe hier.

Morphie 3. Jan 2013 07:19

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Popov (Beitrag 1197427)
Ob Setup eine Möglichkeit bieten könnte, müsste man testen.

Wie ich bereits geschrieben habe, ist genau das die Lösung.
Beim Verteilen von Software muss das Setup alle passenden Berechtigungen setzen.

Verbesserungsvorschlag:
Und da das Thema immer wieder auftritt, und aus diesem Grund die Kompatiblitätsprobleme zwischen XP (als Administrator) > Vista auftraten, wäre es vielleicht mal Sinnvoll, einen Sticky-Hilfethread hier ins Forum zu schreiben...

Dalai 3. Jan 2013 09:16

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Popov (Beitrag 1197427)
[...] kann ich mich erinnern, dass es keinen Ort auf dem Rechner (bei NTFS) gibt, wo alle von Hause aus die nötigen Rechte hätten. Auf All Users mögen alle lesend zugreifen können, aber nicht schreibend, was wohl bei einer Datenbank seine Probleme mitbringen wird.

Dann mache ich wohl etwas anders als du. Sowohl in meiner Win7-VM als auch auf meinem Host mit Win7 kann ich auch als Benutzer in C:\Users\Public schreiben (auch in Dateien, die von einem Admin angelegt wurden). Selbst in C:\Users\All Users (das auf C:\ProgramData linkt) kann ich Dateien/Verzeichnisse anlegen (aber nicht von anderen angelegte Dateien ändern).

Auf XP trifft deine Aussage sicherlich zu, weil Benutzer dort nur Leserechte haben und der Pseudobenutzer "Interaktiv" nicht in der Rechteliste auftaucht. "Interaktiv" dürfte sogar Gäste mit einbeziehen, vermute ich mal.

MfG Dalai

Morphie 3. Jan 2013 09:28

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Dalai (Beitrag 1197436)
Dann mache ich wohl etwas anders als du. Sowohl in meiner Win7-VM als auch auf meinem Host mit Win7 kann ich auch als Benutzer in C:\Users\Public schreiben (auch in Dateien, die von einem Admin angelegt wurden).

Dieses Verzeichnis ist aber für "End-User-Managed Data" da. Hier haben Datenbanken oder Einstellungsdateien nichts zu suchen. Hier werden normalerweise Dokumente, Bilder, MP3s usw., die für alle verfügbar sein sollen, abgelegt.

Zitat:

Zitat von Dalai (Beitrag 1197436)
Selbst in C:\Users\All Users (das auf C:\ProgramData linkt) kann ich Dateien/Verzeichnisse anlegen (aber nicht von anderen angelegte Dateien ändern).

Und genau das ist doch der Punkt. Genau hier gehören die Daten hin, allerdings muss man die Berechtigungen entsprechend anpassen, damit die Datenbank auch von allen Benutzern bearbeitet werden kann.

Hier mal das FileSystemNamespace-Guideline von Microsoft: http://www.microsoft.com/en-us/downl....aspx?id=22322

p80286 3. Jan 2013 09:32

AW: Windows 7 Rechte für C:\Users\Public
 
Warum wird eigentlich die Vorgabe von MS von einigen als gottgegeben hingenommen?
In einigen Threads wurde oft schon gepostet, daß sich alle Daten aif der zweiten Partition D: befinden. Was spricht dagegen. Genauso kann man auf C: ein Unterverzeichnis Daten einrichten und in diesem die notwendigen Rechte vergeben.
Vorraussetzung hierfür ist allerdings, daß der aktive Definator die entsprechende Berechtigung hat, und das er weiß was er tut.

Gruß
K-H

jaenicke 3. Jan 2013 09:39

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von p80286 (Beitrag 1197439)
In einigen Threads wurde oft schon gepostet, daß sich alle Daten aif der zweiten Partition D: befinden. Was spricht dagegen

Nichts. Wer dann die passenden Verzeichnisse nicht auch dorthin umleitet, damit Programme das auch wissen, ist selbst schuld...

Morphie 3. Jan 2013 10:01

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von p80286 (Beitrag 1197439)
Warum wird eigentlich die Vorgabe von MS von einigen als gottgegeben hingenommen?
In einigen Threads wurde oft schon gepostet, daß sich alle Daten aif der zweiten Partition D: befinden. Was spricht dagegen. Genauso kann man auf C: ein Unterverzeichnis Daten einrichten und in diesem die notwendigen Rechte vergeben.
Vorraussetzung hierfür ist allerdings, daß der aktive Definator die entsprechende Berechtigung hat, und das er weiß was er tut.

Gruß
K-H

Klar kann man das machen, wenn man für sich selbst oder für die eigene Firma Programme schreibt... Aber sobald man Standardsoftware verkaufen will, sollte man doch schon die offiziellen Speicherorte benutzen.
Bei mir würde keine Software lange überleben, die sich einfach ungefragt irgendwohin kopiert, wo sie nichts zu suchen hat, nur weil die Programmierer meinen, sich nicht an die Vorgaben halten zu müssen. (oder es nicht besser wissen)

user0815 3. Jan 2013 10:12

AW: Windows 7 Rechte für C:\Users\Public
 
CSIDL_COMMON_APPDATA
The file system directory that contains application data for all users. A typical path is C:\Documents and Settings\All Users\Application Data. This folder is used for application data that is not user specific. For example, an application can store a spell-check dictionary, a database of clip art, or a log file in the CSIDL_COMMON_APPDATA folder.

delphipraxis: http://www.delphipraxis.net/158434-o...fuer-alle.html

p80286 3. Jan 2013 10:22

AW: Windows 7 Rechte für C:\Users\Public
 
[QUOTE=Morphie;1197441Bei mir würde keine Software lange überleben, die sich einfach ungefragt irgendwohin kopiert, wo sie nichts zu suchen hat, nur weil die Programmierer meinen, sich nicht an die Vorgaben halten zu müssen. (oder es nicht besser wissen)[/QUOTE]

Da bin ich ganz Deiner Meinung,
der klitzekleine Unterschied besteht in "ungefragt".
Wer als Programmierer dies nicht einbezieht, ist nur als Datenknecht zu gebrauchen.

Gruß
K-H

Morphie 3. Jan 2013 10:26

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von p80286 (Beitrag 1197444)
Da bin ich ganz Deiner Meinung,
der klitzekleine Unterschied besteht in "ungefragt".
Wer als Programmierer dies nicht einbezieht, ist nur als Datenknecht zu gebrauchen.

Jupp, wenn es eine Software anbietet, den Speicherort zu konfigurieren, bin ich vollkommen zufrieden.
Ich mache es immer so:
1. Daten in den Ordner für alle Benutzer %ProgramData%
2. Daten in den Ordner für den aktuell angemeldeten Benutzer %AppData%
3. Daten direkt in das Programmverzeichnis (für portable USB-Stick Versionen)
4. Daten an einen konfigurierbaren Speicherort ablegen (diese Einstellung wird dann im Programmverzeichnis gespeichert (INI oder XML), kann daher nur als Administrator geändert werden

JamesTKirk 3. Jan 2013 10:34

AW: Windows 7 Rechte für C:\Users\Public
 
Zitat:

Zitat von Andidreas (Beitrag 1197379)
Für dieses Verzeichnis müssten doch normalerweise alle User eines PCs Schreibrechte haben oder?

Der Vollständigkeit halber noch ein Link dazu, warum das eine schlechte Idee(TM) ist: When people ask for security holes as features: World-writable files

Gruß,
Sven

Andidreas 3. Jan 2013 10:52

AW: Windows 7 Rechte für C:\Users\Public
 
Um mal auf meine Frage zurückzukommen...
Die folgenden Ordner wären doch die richtigen, oder?

Win 7 --> C:\ProgramData\MeineAnwendung\
Win XP --> C:\Documents and Settings\All Users\Application Data\MeineAnwendung\

Edit:
Ermittlung natürlich über KnownFolderID und CSIDL

Morphie 3. Jan 2013 10:57

AW: Windows 7 Rechte für C:\Users\Public
 
Ja, so ist es richtig.

Wobei MS ja noch vorschlägt, den Pfad in etwa so aufzubauen:
C:\ProgramData\<Firma>\<Produkt>\<Version>\

Das hat den Vorteil, dass sich zwei Produkte mit gleichem Produktnamen (wohl eher sehr selten) nicht gegenseitig irgendetwas überschreiben.

Andidreas 3. Jan 2013 11:46

AW: Windows 7 Rechte für C:\Users\Public
 
Für Win Vista gilt das selbe wie für Win 7 oder? Also auch C:\ProgramData\MeineAnwendung\

Morphie 3. Jan 2013 11:47

AW: Windows 7 Rechte für C:\Users\Public
 
Ja, die Ordnerstruktur ist bei Vista und Win7 identisch.


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