Es gibt einen Blogbeitrag dazu: blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files.aspx (Ich darf noch nicht verlinken, du musst cut-n-paste machen, bis es korrigiert ist.
Es scheint sich tatsächlich um eine bestimmte Frage zu drehen: Wenn Sie Dateien haben, die von allen Benutzern beschreibbar sein sollen, erwarten Sie, dass der Benutzer die Dateien im Explorer erkennt und in der Lage ist, einen Doppelklick auf sie auszuführen oder Sie möchten, dass die Dateien ausgeblendet werden und nur von Ihrer Anwendung im Hintergrund verwendet werden.
Wenn Sie möchten, dass die Dateien von allen Benutzern im Explorer gefunden werden, möchten Sie sie wahrscheinlich in c: \ users \ public ablegen. Alles, was Sie tun müssen, ist sie an diesem Ort zu platzieren, und die Standardsicherheit sollte funktionieren.
Wenn Sie möchten, dass die Dateien von Benutzern ausgeblendet werden, möchten Sie sie wahrscheinlich in c: \ programdata speichern. In diesem Fall ist die Standardsicherheit wahrscheinlich nicht korrekt, wenn Sie die Dateien erstellen. Daher müssen Sie die ACL der Anwendung für Ihre Dateien benötigen. Oder besser ist es wahrscheinlich, dass Ihr Setup-Programm eine Verzeichnisstruktur für Ihre App unter c: \ programdata erstellt und das Setup-Programm für jedes Verzeichnis eine gute Standard-ACL festlegt - dann muss Ihre App sich nicht darum kümmern, ACLs zu setzen erstellt die Dateien, es muss nur die Dateien an den richtigen Stellen erstellen.
In allen Fällen sollten Sie die entsprechende Win32- (oder .Net Framework-) Funktion aufrufen, um den Pfad zum Verzeichnis c: \ programdata oder c: \ users \ public zu erhalten. Schreiben Sie diese Pfade in Ihrer App nicht fest - wenn Sie den Code fest codieren, werden Sie einige Fälle übersehen, in denen der Benutzer das Verzeichnis verschoben oder Windows auf ungewöhnliche Weise installiert hat, und Ihre App wird beschädigt.
Wie würde ich die Berechtigungen programmatisch ändern? Vielleicht mit CACLS? IIRC, das Administratorrechte erfordert. –
Der Ersteller einer Datei hat in der Regel spezielle Berechtigungen. Ich konnte Schreibrechte für die Benutzergruppe in einem Ordner hinzufügen, den ich in C: \ ProgramData erstellt habe, ohne UAC-Erhöhung zu benötigen. Es ist schon eine Weile her, dass ich irgendwelche Berechtigungen programmiert habe :( – crashmstr