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:
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!
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 667495
Url: https://administrator.de/contentid/667495
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
2 Kommentare
Neuester Kommentar
Servus,
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
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