PDA

View Full Version : مشکل در lock و unlock کردن فولدر



mohsencom
جمعه 12 فروردین 1390, 23:42 عصر
سلام خدمت تمامی دوستان

من کد زیر رو برای lock و unlock کردن فولدرها به کار میبرم اما عمل نمیکنه...هیچ پیغام خطایی نمیده ولی بعد از اجرا میبینم راحت میشه وارد پوشه شد.....من کلی سرچ کردم اما به نتیجه ای نرسیدم...یه راهی رو تو تاپیک های دیگه دیدم که از طریق رجیستری میشد پوشه رو به یه شکل دیگه درآورد اما با یه rename این ترفند راحت دور زده میشد..من این راهو نمیخوام...دوستان کمک کنین تا با این کدی که میذارم به نتیجه برسیم..ممنون ازهمتون :خجالت:


Imports System.Security.AccessControl
Imports System.IO


Public Class protect


Private Sub Btnlock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnlock.Click
Dim FilePath As String = "D:\lock"
Dim fs As FileSystemSecurity = File.GetAccessControl(FilePath)
fs.AddAccessRule(New FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny))
File.SetAccessControl(FilePath, fs)
MsgBox("قفل شد")
End Sub


Private Sub BtnUnlock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnUnlock.Click
Dim FilePath As String = "D:\lock"
Dim fs As FileSystemSecurity = File.GetAccessControl(FilePath)
fs.AddAccessRule(New FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow))
File.SetAccessControl(FilePath, fs)
MsgBox("باز شد")
End Sub
End Class

koorosh-soft
شنبه 13 فروردین 1390, 00:21 صبح
درست نمیدونم اما فکر کنم برای قفل کردن باید FullControl رو تغییر بدی

mohsencom
شنبه 13 فروردین 1390, 00:37 صبح
درست نمیدونم اما فکر کنم برای قفل کردن باید FullControl رو تغییر بدی

منم همین کارو کردم دیگه...اگه تو سورس کاملا دقت کردی باشی متوجه میشی دوست من :بامزه:

mohsencom
یک شنبه 14 فروردین 1390, 18:53 عصر
اساتید محترم پیشنهادی،نظری،چیزی واسه سورسی که گذاشتم ندارین؟؟؟:ناراحت:

Saman_12
دوشنبه 15 فروردین 1390, 01:47 صبح
کدتون یه قسمت کم داشت براتون درستش کردم :

Dim fld As New System.IO.DirectoryInfo("D:\lock")
Dim sec As System.Security.AccessControl.DirectorySecurity

sec = fld.GetAccessControl()
For Each rul As System.Security.AccessControl.FileSystemAccessRule In sec.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
sec.RemoveAccessRuleAll(rul)
Next
sec.SetAccessRuleProtection(True, False)
fld.SetAccessControl(sec)

sec.AddAccessRule(New Security.AccessControl.FileSystemAccessRule("CREAT OR OWNER", Security.AccessControl.FileSystemRights.FullContro l, Security.AccessControl.AccessControlType.Deny))
fld.SetAccessControl(sec)
MsgBox("قفل شد")

mohsencom
دوشنبه 15 فروردین 1390, 03:27 صبح
کدتون یه قسمت کم داشت براتون درستش کردم :

Dim fld As New System.IO.DirectoryInfo("D:\lock")
Dim sec As System.Security.AccessControl.DirectorySecurity

sec = fld.GetAccessControl()
For Each rul As System.Security.AccessControl.FileSystemAccessRule In sec.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))
sec.RemoveAccessRuleAll(rul)
Next
sec.SetAccessRuleProtection(True, False)
fld.SetAccessControl(sec)

sec.AddAccessRule(New Security.AccessControl.FileSystemAccessRule("CREAT OR OWNER", Security.AccessControl.FileSystemRights.FullContro l, Security.AccessControl.AccessControlType.Deny))
fld.SetAccessControl(sec)
MsgBox("قفل شد")

دوست عزیز متاسفانه کد شما هم جواب نداد...شما تستش کردین؟
بعد از اجرا میرم فولدر رو چک میکنم اما باز میبینم براحتی میشه واردش شد و محتویاتشو دید...کد شما اولین نمونه کاملی بود که دیدم...حیف که جواب نداد...من تمام اینترنت رو ، تمام سایتهای بزرگ رو سرچ کردم اما جوابی که میخوام رو نگرفتم...آخه چرا مگه میشه واسه این کار هیچ راهی جواب نده :ناراحت:

Saman_12
دوشنبه 15 فروردین 1390, 16:27 عصر
دوست عزیز متاسفانه کد شما هم جواب نداد...شما تستش کردین؟
بله تست کردم مشکلی نداره اما توی بعضی ویندوز ها لازم نام یوزر ذکر بشه یعنی (در ضمن این کد برای قفل کردن پوشه نیست بلکه تنها سطح دسترسی رو به Object مورد نظر تعیین میکنه!) :
Dim fld As New System.IO.DirectoryInfo(D:\lock")
Dim sec As System.Security.AccessControl.DirectorySecurity

sec = fld.GetAccessControl()

For Each rul As System.Security.AccessControl.FileSystemAccessRule In sec.GetAccessRules(True, True, GetType(System.Security.Principal.NTAccount))

sec.RemoveAccessRuleAll(rul)
Next

sec.SetAccessRuleProtection(True, False)
fld.SetAccessControl(sec)

sec.AddAccessRule(New Security.AccessControl.FileSystemAccessRule(My.Use r.Name, Security.AccessControl.FileSystemRights.FullContro l, Security.AccessControl.AccessControlType.Deny))
fld.SetAccessControl(sec)

MsgBox("قفل شد")

mohsencom
دوشنبه 15 فروردین 1390, 22:15 عصر
بعد از جستجوی زیاد تازه فهمیدم که این کدها تو سیستم فایل NTFS جواب میده و خودم این کدی که گذاشتمو تست شده و 100% جواب میده البته تو سیستم فایل NTFS

دوستان اگه راه حلی به ذهنتون رسید که تو سیستم فایل FAT32 جواب بده ممنون میشم بگید.

اینم کد :

Imports System.Security.AccessControl
Imports System.IO

Public Class protect

Private Sub Btnlock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btnlock.Click
Dim FilePath As String = "c:\lock"
Dim fs As FileSystemSecurity = File.GetAccessControl(FilePath)
fs.AddAccessRule(New FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny))
File.SetAccessControl(FilePath, fs)
MsgBox("قفل شد")
End Sub


Private Sub BtnUnlock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnUnlock.Click
Dim FilePath As String = "c:\lock"
Dim fs As FileSystemSecurity = File.GetAccessControl(FilePath)
fs.RemoveAccessRule(New FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny))
File.SetAccessControl(FilePath, fs)
MsgBox("باز شد")
End Sub
End Class

mhr548010
سه شنبه 16 فروردین 1390, 22:25 عصر
سلام دوستان
من یه اشتباه کردم و با کد بالایی یکی از درایو های کامپیوترم رو lock کردم .حالا همه فولدرهای توش lock شده و هر چقدر که درایو رو unlock میکنم دیگه به حالت قبل برنمیگرده.:گریه:لطفآ اگه کسی میدونه که باید چکار کنم که مشکلم حل بشه راهنمایی کنه.
ممنون:قلب:

mohsencom
سه شنبه 16 فروردین 1390, 22:51 عصر
سلام دوستان
من یه اشتباه کردم و با کد بالایی یکی از درایو های کامپیوترم رو lock کردم .حالا همه فولدرهای توش lock شده و هر چقدر که درایو رو unlock میکنم دیگه به حالت قبل برنمیگرده.:گریه:لطفآ اگه کسی میدونه که باید چکار کنم که مشکلم حل بشه راهنمایی کنه.
ممنون:قلب:

من همونجور که کد lock رو گذاشتم کد unlock رو هم گذاشتم...بازم میذارم...با این کد unlock میشه ::لبخند:

Private Sub BtnUnlock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnUnlock.Click
Dim FilePath As String = "c:\lock"
Dim fs As FileSystemSecurity = File.GetAccessControl(FilePath)
fs.RemoveAccessRule(New FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny))
File.SetAccessControl(FilePath, fs)
MsgBox("باز شد")
End Sub
End Class

mhr548010
چهارشنبه 17 فروردین 1390, 09:48 صبح
سلام
خب منم گفتم که با کد شما درایو رو unlock کردن ولی باز هم همه ی فولدر های توش lock هستش.
لطفآ کمک کنید همه ی دیتاهام توی این درایو.:گریه:

mohsencom
چهارشنبه 17 فروردین 1390, 18:11 عصر
من نمیدونم شما چکار کردید که اینطوری شده..این کدی که گذاشتم واسه قفل کردن پوشه هست نه درایو....والا تنها فکری که الان به ذهنم میرسه اینه که نرم افزار Folder guard رو نصب کن..ورژن 7.1ش خوبه و کار باهاش راحته...تو گوگل جستجو کنید و دانلود کنید و با استفاده ازون ببینید میتونید قفل درایو رو باز کنید یا نه.....نگران نباشید...فایلهاتون از بین نمیره..بالاخره یجوری قفلش باز مبشه :چشمک:

systam
یک شنبه 17 شهریور 1392, 17:51 عصر
چی فایده از قفل گذاری به راحتی میشه قفل رو باز کرد بدون استفاده از نرم افزار