PDA

View Full Version : سوال: کپی فایل و فولدر به همراه سطح دسترسی NTFS



robat7
پنج شنبه 25 آبان 1391, 01:21 صبح
سلام دوستان
من می خواهم برنامه ای بنویسم که فایلها و فولدر ها را از یک درایو به درایو دیگر به همراه سطح دسترسی NTFS کپی نماید

چطور می توانم سطح دسترس را برای فایل و فولدر بخوانم و در مقصد اعمال نمایم

با تشکر

mehdi.mousavi
پنج شنبه 25 آبان 1391, 08:08 صبح
سلام دوستان چطور می توانم سطح دسترس را برای فایل و فولدر بخوانم و در مقصد اعمال نمایم با تشکر

سلام.
شما می تونید با استفاده از دو متود GetAccessControl (http://msdn.microsoft.com/en-us/library/8e1fc3b8.aspx) و SetAccessControl (http://msdn.microsoft.com/en-us/library/system.io.file.setaccesscontrol.aspx) از کلاس File، به هدفتون برسید.

موفق باشید.

robat7
پنج شنبه 25 آبان 1391, 20:52 عصر
سلام و با تشکر
برای دوستانی که بدنبال کد برنامه هستند.


using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;


private void SetPermissions(string fileNameSource, string fileNameTarget)
{
AuthorizationRuleCollection rules;
//DirectorySecurity dirSec = Directory.GetAccessControl(fileNameSource);
//// Gets the list of all access-rules of the specified folder.
//rules = dirSec.GetAccessRules(true, true, typeof(NTAccount));

FileSecurity fileSec = File.GetAccessControl(fileNameSource);
rules = fileSec.GetAccessRules(true, true, typeof(NTAccount));

// Enumerates all access rules set on the specified folder.
foreach (FileSystemAccessRule rule in rules)
{

//MessageBox.Show("Identity: {4}\nType: {0}\nRights {1}\nPropagation Flags: {2}\nInherited: {3}" +
//"\n\r" + rule.AccessControlType +
//"\n\r" + rule.FileSystemRights +
//"\n\r" + rule.PropagationFlags +
//"\n\r" + rule.IsInherited +
//"\n\r" + rule.IdentityReference);

// Get a FileSecurity object that represents the // current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileNameTarget);
string account = rule.IdentityReference.ToString().Trim();
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account,
rule.FileSystemRights, rule.AccessControlType));

// Set the new access settings.
File.SetAccessControl(fileNameTarget, fSecurity);
}
}