السلام عليكم
كيف حالكم جميعااا؟؟؟
اخوتي الافاضل تواجهني مشكلة ، نحن نريد ان نعمل Lock/UnLock للدرايفرات ، وقد تمت عملية غلق الدرايفر F ولا يمكن الوصول إليه الا عند حساب الآدمنستريتور
وعندما اردت عمل UnLock يقول انه غير قادر على الوصول للقرص ، أرجو احدكم يساعدني بهالمشكلة وجزاكم الله كل خير .
ملاحظة : هذا الكود بالاساس استخدمته لغلق المجلدات ومشي معي تمام جدا في Lock/UnLock لكن نصف العكس مع الدرايفرات ، بمعنى اغلق الداريفر لكنه لم يفيد كود الفتح معه.
كود Lock
ListViewItem LVI;
DirectoryInfo myDirectoryInfo;
DirectorySecurity myDirectorySecurity;
string User;
LVI = new ListViewItem(dirListBox1.Path.ToString() + dirListBox1.SelectedItem.ToString());
LVI.SubItems.Add("Locked");
if (TotalLock.Checked)
{
myDirectoryInfo = new DirectoryInfo(dirListBox1.Path.ToString() + @"\" + dirListBox1.SelectedItem.ToString());
myDirectorySecurity = myDirectoryInfo.GetAccessControl();
User = System.Environment.UserDomainName + "\\" + System.Environment.UserName.ToString();
//---
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.Delete, AccessControlType.Deny));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, AccessControlType.Deny));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
MessageBox.Show("Permissions Altered Successfully");
LVI.SubItems.Add("Total Lock");
}كود UnLock
ListViewItem LVI;
DirectoryInfo myDirectoryInfo;
DirectorySecurity myDirectorySecurity;
string User;
LVI = new ListViewItem(dirListBox1.Path.ToString() + dirListBox1.SelectedItem.ToString());
//LVI.SubItems.Add("UnLocked");
if (listView2.SelectedItems.Count > 0)
{
switch (listView2.SelectedItems[0].SubItems[2].Text.ToString())
{
case "Total Lock":
//MessageBox.Show(listView1.SelectedItems[0].Text.ToString());
myDirectoryInfo = new DirectoryInfo(listView2.SelectedItems[0].Text.ToString());
myDirectorySecurity = myDirectoryInfo.GetAccessControl();
User = System.Environment.UserDomainName + "\\" + System.Environment.UserName.ToString();
//---
myDirectorySecurity.RemoveAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, AccessControlType.Deny));
myDirectoryInfo.SetAccessControl(myDirectorySecurity);
break;علما انه تم بعد عملية الغلق تصحيح المسار لكنه لم يفيد اطلاقا في ذلك!، والغريب انه اغلق بالمسار الاول قبل التصحيح بعد ذلك!!!