greeenn
Goto Top

C Sharp, Ordner mit AD Zugriffsberechtigungen kopieren

Hallo,

ich versuche zurzeit eine Anwendung mit C# zu entwickeln.
Mit der Anwendung soll man einen Ordner von einem Netzlaufwerk inklusive der Zugriffsrechte kopieren können.

Es haben also nur ausgewählte Nutzer und Gruppen zugriff auf den Ordner und diese Berechtigungen sollen mit kopiert werden.

Ich hab schon ein paar Ansätze gehabt, bei denen der Ordner kopiert und eingefügt wird nur leider werden die Rechte nie übernommen.

Hier mein erster Lösungsweg:

 private void Click_Copy_directory(object sender, RoutedEventArgs e)
        {
          
            // Start Directorycopy 
            //(Pfade geschwärzt)
            DirectoryCopy(@"#####", @"#####", true);  
        }

        private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
        {
            // Get the subdirectories for the specified directory.
            DirectoryInfo dir = new DirectoryInfo(sourceDirName);

            if (!dir.Exists)
            {
                throw new DirectoryNotFoundException(
                    "Source directory does not exist or could not be found: "  
                    + sourceDirName);
            }

            DirectoryInfo dirs = dir.GetDirectories();

            // If the destination directory doesn't exist, create it.        
            Directory.CreateDirectory(destDirName);

            // Get the files in the directory and copy them to the new location.
            FileInfo files = dir.GetFiles();
            foreach (FileInfo file in files)
            {
                string tempPath = Path.Combine(destDirName, file.Name);
                file.CopyTo(tempPath, false);
            }

            // If copying subdirectories, copy them and their contents to new location.
            if (copySubDirs)
            {
                foreach (DirectoryInfo subdir in dirs)
                {
                    string tempPath = Path.Combine(destDirName, subdir.Name);
                    DirectoryCopy(subdir.FullName, tempPath, copySubDirs);
                }
            }
        }

Das ganze klappt wie gesagt Super, nur leider fehlen die Rechte.

Hat jemand eine Idee wie ich das Lösen könnte?

Ich bin vorhin über das Namespace "System.Security.AccessControl" gestolpert, wäre das vielleicht eine möglichkeit?

Vielen Dank!

Content-Key: 667495

Url: https://administrator.de/contentid/667495

Printed on: April 25, 2024 at 06:04 o'clock

Member: colinardo
colinardo Jun 11, 2021 updated at 10:01:07 (UTC)
Goto Top
Servus,
Ich bin vorhin über das Namespace "System.Security.AccessControl" gestolpert, wäre das vielleicht eine möglichkeit?
Jepp, Quell acl mit GetAccessControl() holen AccessRuleProtection festlegen und mit SetAccessControl(acl) auf das Targetobject übertragen ...
https://stackoverflow.com/questions/11533767/c-sharp-copying-a-folder-to ...
Berechtigungen und Token des Accounts der dies an den Zieldaten durchführen soll natürlich beachten sonst gibt's ne Access Denied Exception, also bitte das ganze mit Try Catch kapseln um Fehler dieser und anderer Art wie bspw. Dateien um Zugriff etc. abzufangen.

Grüße Uwe
Member: GreeeNn
GreeeNn Jun 11, 2021 at 09:34:23 (UTC)
Goto Top
Vielen Dank für den Tipp, ich probiers mal damit.

Grüße