einer eine Idee woran das liegen kann, das die mit File.Move kopierte Datei nicht die Sicherheitsattribute des Zielverzeichnisses annimmt.
Die Datei wird kopiert - funktioniert einbandfrei.
Das Zielverzeichnis hat für den aktuellen, angemeldeten User nur eingeschränkte (Lese-) Rechte,
der Kopiervorgang erfolgt durch eine C#-Anwendung die mit Admin-Rechten
unter einem anderen User-Account mit hilfe von Run as als Task läuft.
Meine Versuche entsprechend der MSDN-Doku nachträglich die mit
File.GetAccessControl(fileName)
von einer Datei mit den gewünschten Rechten dann mit
File.SetAccessControl(fileName, fSecurity);
zu setzen waren auch nicht erfolgreich es kommt auch keine Fehlermeldung beim debuggen.
Vermutlich, da ich raten muss, meinst Du die File and Folder Permissions unter "Sicherheitsattribute".
File.Move interessieren diese nicht, da die Permissions ein Feature von NTFS sind.
Und in NTFS ist es so, dass Permissions sich hierarchisch ergeben. Daher interessiert das auch Move nicht.
Move verwendet hier auch nur die Win32 API.
How permissions are handled when you copy and move files and folders
Den Fall, dass SetAccessControl nichts meldet und es trotdem nichts setzt, den gibt es so eigentlich nicht.
Ohne Code von Dir bleibt einem aber nichts als raten.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
vielen Dank für den Hinweis:-) Problem gelöst
der folgende Abschnitt war sehr hilfreich;
aus (How permissions are handled when you copy and move files and folders)
beim File.Moven von anderen Volumes übernimmt windows die Sicherheitseinstellungen des Ordners für das File. (auf dem gleichen Volume nicht !)
You can modify how Windows Explorer handles permissions when objects are copied or moved to another NTFS volume. When you copy or move an object to another volume, the object inherits the permissions of its new folder. However, if you want to modify this behavior to preserve the original permissions, modify the registry as follows.