PDA

View Full Version : سوال: درخواست کد Cmd بستن دسترسی یک درایو



hamid_0341
پنج شنبه 24 مرداد 1392, 11:44 صبح
باسلام
چجوری دسترسی به یک درایو با کد Cmd ببندم که Access Denied بده ؟
مثل عکس زیر
109104

shahryari
پنج شنبه 24 مرداد 1392, 11:58 صبح
سلام
نیازی به دستورات داس نیست با خود دات نت میتونید اینکارو انجام بدید
Dim fs As FileSystemSecurity = File.GetAccessControl("E:\")
fs.AddAccessRule(New FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny))
File.SetAccessControl("E:\", fs)

hamid_0341
پنج شنبه 24 مرداد 1392, 12:01 عصر
کد C#
FileSystemSecurity fs = File.GetAccessControl("E:\\"); fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny)); File.SetAccessControl("E:\\", fs);

hamid_0341
پنج شنبه 24 مرداد 1392, 12:03 عصر
برای استفاده از این کد چه using هایی میخوام؟

shahryari
پنج شنبه 24 مرداد 1392, 12:10 عصر
البته این کد به زبان ویبی هست و اینارو باید ایمپورت یا همون یوزینگ کنید

Imports System.Security.AccessControl
Imports System.IO

به راحتی میشه تبدیل به سیشارپ کرد و دراصل هیچفرقی باهم ندارد
FileSystemSecurity fs = File.GetAccessControl("E:\\");
fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("E:\\", fs);

shahryari
پنج شنبه 24 مرداد 1392, 12:18 عصر
البته بیشتر وقتها دات نت مثل یک مشاور قدرتمند یوزینگ ها یا ایمپورت های لازم رو پیشنهاد میده مثل تصویر زیر


109108

hamid_0341
پنج شنبه 24 مرداد 1392, 12:30 عصر
اقا به C# تبدیلش کرم از این دو تا using هم استفاده کرده بودم ولی کار نمیکنه :افسرده:

hamid_0341
پنج شنبه 24 مرداد 1392, 12:35 عصر
از این Using ها باید استفاده میکردم
using Microsoft.VisualBasic; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.Security.AccessControl; using System.IO;
ولی بازم مشکل داره ارور میده چرا ؟
109116

shahryari
پنج شنبه 24 مرداد 1392, 12:57 عصر
سلام اصلاح شد
FileSecurity fs = File.GetAccessControl("E:\\");
fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("E:\\", fs);

hamid_0341
پنج شنبه 24 مرداد 1392, 17:23 عصر
اقا تو رو خدا زاهنمایی کن من الان درایو E قفل شده :(
چجوری بازش کنم ؟
از اینم استفاده کردم باز نشد
FileSecurity fs = File.GetAccessControl("E:\\");
fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl("E:\\", fs);

shahryari
پنج شنبه 24 مرداد 1392, 17:27 عصر
این هم برای غیر فعال کردن
FileSecurity fs = File.GetAccessControl("E:\\");
fs.RemoveAccessRule (new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("E:\\", fs);

اینم یه روش دیگه برای غیرفعال کردن
DirectoryInfo di = new DirectoryInfo("E:\\");
DirectorySecurity ds = di.GetAccessControl();
FileSystemAccessRule ar = new FileSystemAccessRule( Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny);
ds.RemoveAccessRule (ar);
di.SetAccessControl(ds);

FastCode
پنج شنبه 24 مرداد 1392, 19:28 عصر
اقا تو رو خدا زاهنمایی کن من الان درایو E قفل شده :(
چجوری بازش کنم ؟
از اینم استفاده کردم باز نشد
FileSecurity fs = File.GetAccessControl("E:\\");
fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl("E:\\", fs);

اگر vs رو هم توی E نصب کرده بودی از خنده میخوردم زمین.

دفعه بعدی روی drive راست کلیک کن.یک جایی داره Access rules یا یک همچین چیزی.

hamid_0341
جمعه 25 مرداد 1392, 10:19 صبح
اقا این کد تمام درایومو ریخت بهم :( :( پوشه هام دیگه باز نمیشه access denied میده
توی access rules به یوزرم Full Control دادم ولی باز نمیشه
:اشتباه:
من توی درایو E خیلی فایل دارم چیکار کنم ؟ :((((

hamid_0341
جمعه 25 مرداد 1392, 10:47 صبح
حتما باید ویندوز عوض کنم ؟ :ناراحت: هر کار میکنم درستنمیشه

hamid_0341
جمعه 25 مرداد 1392, 12:16 عصر
کسی نظری نداره؟

Mahmoud.Afrad
جمعه 25 مرداد 1392, 13:21 عصر
DirectoryInfo dirinfo = new DirectoryInfo("f:\\");

DirectorySecurity fs = dirinfo.GetAccessControl();
foreach (FileSystemAccessRule acr in fs.GetAccessRules(true, false, typeof(System.Security.Principal.NTAccount)))
{
fs.RemoveAccessRule(acr);
}

SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);

fs.AddAccessRule(
new FileSystemAccessRule(
everyone,
FileSystemRights.Read | FileSystemRights.ExecuteFile| FileSystemRights.ListDirectory,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));

fs.AddAccessRule(
new FileSystemAccessRule(
"Administrators",
FileSystemRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));

dirinfo.SetAccessControl(fs);

hamid_0341
جمعه 25 مرداد 1392, 18:43 عصر
چجوری فایل های درایو E درست کنم همشون خراب شدن همه Access Denied میدن از توی Access بهشون Fullcontrol دادم ولی نمیشه
خدایی یکی راهنمایی کنه

FastCode
جمعه 25 مرداد 1392, 18:56 عصر
ویندوز عوض کردن هم هیچ فایده ای نخواهد داشت.
اگر اشتباه نکنم اسم ابزاری که این مشکل رو حل میکنه calcs هست.

hamid_0341
جمعه 25 مرداد 1392, 19:25 عصر
یکم بیشتر توضیح میدی ؟

hamid_0341
جمعه 25 مرداد 1392, 20:43 عصر
افای شهریاری به دادم برس

shahryari
جمعه 25 مرداد 1392, 20:43 عصر
سلام
در کدهای بالا دسترسی برای یوزر فعلی سیستم غیر فعال شده ، برای نجات از این قضیه کافیه یک یوزر جدید با دسترسی ادمین برای ویندوزتون تعریف کنید و با اون یوزر لاگین بشید

hamid_0341
جمعه 25 مرداد 1392, 20:46 عصر
این کار رو هم انجام دادم دسترسی administator هم بهش دادم ولی بازم نشد

hamid_0341
جمعه 25 مرداد 1392, 20:57 عصر
راه حل دیگه ای نیست ؟
ویندوز عوض کن درست میشه ؟

hamid_0341
جمعه 25 مرداد 1392, 21:09 عصر
اقا یک کد میدین اموزش درست کردنشم بدین :لبخند: بخیر گذشت اینجوری درست شد
Cmd باز میکنین با administator
بعد درایو مینویسین : مثال = E:
برای اینکه وارد روت بشین = cd\
و برای درست شدن از این کد استفاده کنین : takeown /f * /r
بخیر گذشت ...

Mahmoud.Afrad
جمعه 25 مرداد 1392, 23:32 عصر
اون کدی که من گذاشتم تست کردی؟ نتیجه چی بود؟ چون من تست کردم بدون مشکل دسترسی برگشت.


راه حل ویندوزیش هم اینه:
از تب security در Properties بخش Advanced . در این قسمت تب Permissions دسترسی ها رو ایجاد و یا اصلاح میکنی و تیک چک باکس Replace all child object permission .... رو میزنی و اوکی میکنی. تب Owner رو هم چک میکنی اگر لازم بود Owner را روی Administrator تنظیم میکنی.

hamid_0341
شنبه 26 مرداد 1392, 07:23 صبح
آقای افراد کد شما برای من ارور داد نتونستم باهاش کار کنم

FastCode
شنبه 26 مرداد 1392, 16:43 عصر
CACLS
یادم اومد.