Im Thread Effekt beim Speichern einer Datei mit Administrator-Rechten habe ich über das Problem gesprochen:
Wenn eine Datei von einem anderen Programm mit Admin-Rechten nach
kann sie nicht mehr von einem Programm ohne Admin-Rechte geöffnet bzw. überschrieben werden, da der "normale" Besitzer aus der Liste der Rechte-Inhaber entfernt wurde
(siehe Bilder im verlinkten Thread).
Von @EaranMaleasi kam die entscheidende Idee, über ein
Wenn eine Datei von einem anderen Programm mit Admin-Rechten nach
"C:\Dokumente und Einstellungen\All Users\..."
geschrieben wurde,kann sie nicht mehr von einem Programm ohne Admin-Rechte geöffnet bzw. überschrieben werden, da der "normale" Besitzer aus der Liste der Rechte-Inhaber entfernt wurde
(siehe Bilder im verlinkten Thread).
Von @EaranMaleasi kam die entscheidende Idee, über ein
FileSecurity
-Objekt den aus der Liste entfernten User wieder hinzuzufügen:C#-Quellcode
- private static void GetFullAccess(string path)
- {
- FileInfo fi = new FileInfo(path);
- FileSecurity fiSecurity = fi.GetAccessControl();
- WindowsPrincipal principal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
- SecurityIdentifier id = WindowsIdentity.GetCurrent().User;
- fiSecurity.AddAccessRule(new FileSystemAccessRule(id, FileSystemRights.FullControl, AccessControlType.Allow));
- fi.SetAccessControl(fiSecurity);
- }
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert!