Zitat:
Ich habe z.B. Schreibrechte auf C:\ Windows 7 mit
UAC
Und du bist nicht zufällig als Admin eingeloggt, dein Delphi-Programm startet aber nicht mit Admin-Rechten?
Du kannst nämlich als eingeloggter Admin auch mit aktivierter
UAC auf dem C:-Root rumwerkeln wie du lustig bist und eine Datei erstellen, und das ganze ohne bösen Dialog, aber wenn dein Delphi-Programm nicht als Admin startet (was der standard ist), hat es keine Schreibrechte aufs C:-Root.
@t0mmy:
Probier mal, ob das Programm über Rechtsklick => Als Administrator ausführen... immer noch den Fehler erzeugt
Während der Laufzeit hast du keine Möglichkeit, die Rechte deines Programms per Code zu erweitern, das wäre auch gegen den Sinn des Rechte-Systems.
Du hast nun aber
zwei drei Möglichkeiten, um dein Problem zu lösen:
1) Die grauslige Variante
#########################
Du forderst über ein Manifest generell Admin-Rechte beim Programm-Start für dein Programm an. Wie das geht, verrät dir die Suchfunktion.
Dann kannst du auch deine INI-Datei auf dem C-Root ablegen. Das halte ich aber für wirklich schlimm und ist nicht zu empfehlen.
Stell dir vor, alle Programme würden ihre Konfig-Einstellungen auf dem C:-Root ablegen? Wir leben doch nicht in der Steinzeit!
2) Die richtige Variante
########################
Du legst deine INI-Datei da ab, wo sie hingehört: Entweder in (einen Unterordner von) CSIDL_COMMON_APPDATA, oder Benutzer-bezogen in CSIDL_APPDATA.
Hierbei sei aber noch erwähnt, dass ein Programm ohne Admin-Rechte erstmal auch da keinen Schreibzugriff hat. Den Schreibzugriff auf einen Unterordner dieser beiden genannten Spezial-Verzeichnisse muss das
Installationsprogramm des Programms freigeben, das ja normalerweise mit Admin-Rechten läuft und es somit auch kann. Das erfordert zwar etwas Mehraufwand, aber so ist es von Microsoft vorgesehen.
3) Die "Das ist mir alles zu kompliziert"-Methode (sozusagen Variante 1.1)
################################################## ##########################
Du baust kein Manifest ein und nimmst auch keinen Specialfolder, sondern verteufelst Microsoft wegen dem dämlichen Rechtesystem und sagst deinen Benutzern, sie sollen das Programm jedesmal über "Rechtsklick => Als Administrator ausführen..." starten, damit es keine
AV gibt.
Nunja, was soll ich sagen....wer sowas macht, sollte vielleicht lieber Äpfel auf dem Stadtmarkt verkaufen
Ich lege dir die Variante zwei ans Herz, jeder User wirds dir danken!