Entwickler-Ecke
Dateizugriff - Fehler beim Speichern / Windows 7 / UAC
juppinger - Mi 05.01.11 15:29
Titel: Fehler beim Speichern / Windows 7 / UAC
Hi zusammen,
WIN 7 Problem:
ich habe ein Programm, welches Dateien anlegt, ändert und löscht im eigenen Verzeichnis.
I.d.R. wird das Programm installiert (setup.exe) nach "c:\program files\name".
Wenn ich das Programm nun per Win7 mit mehreren Usern betreibe, werden die Änderungen (anlegen, speichern,...) , die das Programm durchführt, nicht im o.g. Order [ ExtractFilePath(Application.ExeName ], sondern unter
c:\users\<angemeldeter user>\appdata\local\virtualstore\...
durchgeführt. Vorsicht: ordner ist versteckt.
...liegt meine exe nun im eigenen verzeichnis eine datei an, wird diese nicht wirklich dort, sondern eben in dem user-verzeichnis gespeichert und ist auch nur für mich / user nutzbar.
Das hat wohl zu tun mit "UAC" bzw. Benutzerkontensteuerung in Windows 7.
So wie ich das verstanden habe, wird dies nur für "geschützte" Ordner, wie bsp. c:\program files in windows 7 so gehandhabt mit den Dateien.-Soll wohl die Sicherheit erhöhen.
Da die untersch. Benutzer jedoch auch auf die dateien anderer benutzer der software zugreifen sollen, habe ich somit ein problem.
1. Genügt es, die Software nicht per setup.exe in c:\program files\... zu installieren, sondern z.B. in c:\abc? Wird dann dieses UAC somit nicht durchgeführt für dieses Verzeichnis?
2. Gibt es noch andere Möglichkeiten, dass ich die Dateien "wirklich" dort speichern kann? vermutlich nicht, außer ich wäre admin, oder?
1000 dank im voraus.
grüße,
jup
Moderiert von
Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 05.01.2011 um 18:07
Martok - Mi 05.01.11 16:43
juppinger hat folgendes geschrieben : |
1. Genügt es, die Software nicht per setup.exe in c:\program files\... zu installieren, sondern z.B. in c:\abc? Wird dann dieses UAC somit nicht durchgeführt für dieses Verzeichnis? |
Ja. Das machen portable Anwendungen so.
Aber dafür wird dich (und mich auch, weil ich da sage)
jaenicke vierteilen, federn, teeren und böse angucken :D
juppinger hat folgendes geschrieben : |
2. Gibt es noch andere Möglichkeiten, dass ich die Dateien "wirklich" dort speichern kann? vermutlich nicht, außer ich wäre admin, oder? |
Die Frage sollte eher sein, wie legt man Daten für alle User zugreifbar ab - und da hat Windows das AllUsers-Anwendungsdaten-Verzeichnis für.
Aufpassen: da muss der Installer die Berechtigungen so setzen, dass deine Anwendung auch schreiben darf. Genaueres findet sich
im MSDN [
http://msdn.microsoft.com/en-us/library/ms995853.aspx].
jaenicke - Mi 05.01.11 17:10
Martok hat folgendes geschrieben : |
Ja. Das machen portable Anwendungen so.
Aber dafür wird dich (und mich auch, weil ich da sage) jaenicke vierteilen, federn, teeren und böse angucken :D |
Nö, dafür nicht. Portabel ist das ja ok. Das habe ich sogar in dem
entsprechenden Beitrag [
http://www.delphi-library.de/viewtopic.php?p=548600] in der Library geschrieben. :mrgreen: ;-)
jaenicke hat folgendes geschrieben : |
Eine portable Software soll natürlich in das eigene Verzeichnis schreiben, dafür ist sie da. Solche Software muss dann in einem beschreibbaren Verzeichnis (USB-Stick, Eigene Dateien, ...) liegen. [...] |
Und da steht ja auch alles weitere.
Tranx - Mi 05.01.11 17:31
Wenn Du globale Dateien ändern willst, also Dateien, welche von allen Nutzern gleichermaßen eingesehen udn geändert weren sollen, dann wäre in meinen Augen ein festes Verzeichnis außerhalb der "Eigenen Dateien" angebracht. Z.B. C:\Daten oder gar im Netzwerk. Dies würde ich dann in dem Programm als Option aus einer Ini-Datei auslesen. Aber das geht sicher viel besser. ;)
Martok - Mi 05.01.11 18:21
jaenicke hat folgendes geschrieben : |
Martok hat folgendes geschrieben : | Ja. Das machen portable Anwendungen so.
Aber dafür wird dich (und mich auch, weil ich da sage) jaenicke vierteilen, federn, teeren und böse angucken :D | Nö, dafür nicht. Portabel ist das ja ok. |
Das sagst du jetzt nur, um mich zu ärgern, oder? :mrgreen:
Das lustige ist ja, den Teil mit den portablen Anwendungen erst nachträglich ergänzt hab... ursprünglich stand da nur "Ja."
Tranx hat folgendes geschrieben : |
ein festes Verzeichnis außerhalb der "Eigenen Dateien" angebracht. Z.B. C:\Daten oder gar im Netzwerk. |
Auch eine gute Idee. Hat den Vorteil, dass man nicht im Windows-Profilordner rummüllen muss, und es einfacher zu finden ist.
Tranx hat folgendes geschrieben : |
Dies würde ich dann in dem Programm als Option aus einer Ini-Datei auslesen. Aber das geht sicher viel besser. ;) |
Irgendwo konfigurierbar sollte es auf jeden Fall sein, ja.
elundril - Mi 05.01.11 18:54
Gibts nicht eigentlich auch einen Ordner unter der System-Platte wie All-Users, in dem es auch einen App-Data Ordner gibt in dem man sachen speichern kann? Dadurch wäre er für jeden benutzer gleich und Sebastian muss niemandem Gewalt antun?
lg elundril
jaenicke - Mi 05.01.11 19:05
elundril hat folgendes geschrieben : |
Gibts nicht eigentlich auch einen Ordner unter der System-Platte wie All-Users, in dem es auch einen App-Data Ordner gibt in dem man sachen speichern kann? |
Ja, aber leider nicht so wie es manche gern hätten. Um zu verhindern, dass jemand jemandes anderen Daten überschreibt, hat AFAIR nur der Ersteller volle Rechte in dem Ordner. Genau muss ich es noch einmal nachschauen wie das war, zumindest unter manchen Systemen war das so.
Ich habe ja einen Mechanismus beschrieben wie man es dem Benutzer überlassen kann, wo die Daten konkret liegen. Ob im eigenen Ordner oder in den Anwendungsdaten, ... steht ja alles unter dem Link drin, inklusive konkreter Implementierung.
Wer möchte kann natürlich noch die Möglichkeit eines Verweises auf ein ganz anderes Verzeichnis hinzufügen, dann wohl am besten mit einer entsprechenden Verweis-Konfigurationsdatei in den Anwendungsdaten. Dann sollte wirklich alles erschlagen sein.
Ich finde an der Lösung vor allem am besten, dass die portabel wie installiert funktioniert. Und man die auch vom Stick starten kann ohne eine installierte Version zu stören. Und so weiter.
Delete - Mi 05.01.11 20:39
Es gibt unter WIN 7 z.B. X:\Users\Public\ und X:\Users\Public\Documents und x:\Users\Public\Beliebiger Name.
Darauf kann man sogar mit WIN XP zugreifen.
X = Beliebiger Drivename, vorzugsweise WIN 7 - Partition.
Delete - Mi 05.01.11 22:08
Und unter XP gibt es C:\Dokumente und Einstellungen\All Users\Anwendungsdaten. Und da gehören globale Konfigurationsdaten hin in ein Verzeichnis mit dem Anwendungsnamen. Also C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\MeineAnwendung.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!