问题描述
我关注了该线程C# Copying a Folder to another destination with Security/Permission Settings
中的信息我设法让我的应用复制具有权限的文件和文件夹,但是当它击中任何具有“孤立权限”的文件夹时,它完全消失了。
诸如S-1-5-21-236079之类的权限...
有什么建议吗?
解决方法
这是我的解决方案,在循环中检查“ S-1-5”并跳过了它。
private void PermissionGet(DirectoryInfo Source,DirectoryInfo Destination)
{
string Username;
DirectorySecurity SourceSecurity = Source.GetAccessControl();
foreach (FileSystemAccessRule Rules in SourceSecurity.GetAccessRules(true,true,typeof(System.Security.Principal.NTAccount)))
{
Username = Rules.IdentityReference.Value;
if (!Username.Contains("S-1-5"))
{
PermissionSet(Username,Rules.FileSystemRights,Rules.AccessControlType,Destination);
}
}
}
private void PermissionSet(string Username,FileSystemRights Permission,AccessControlType Access,DirectoryInfo Destination)
{
try
{
DirectorySecurity Security = Destination.GetAccessControl();
Security.AddAccessRule(new FileSystemAccessRule(Username,Permission,Access));
Destination.SetAccessControl(Security);
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
}