PDA

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



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

shahryari
پنج شنبه 24 مرداد 1392, 10: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, 11: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, 11:03 صبح
برای استفاده از این کد چه using هایی میخوام؟

shahryari
پنج شنبه 24 مرداد 1392, 11: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, 11:18 صبح
البته بیشتر وقتها دات نت مثل یک مشاور قدرتمند یوزینگ ها یا ایمپورت های لازم رو پیشنهاد میده مثل تصویر زیر


109108

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

hamid_0341
پنج شنبه 24 مرداد 1392, 11: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, 11:57 صبح
سلام اصلاح شد
FileSecurity fs = File.GetAccessControl("E:\\");
fs.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("E:\\", fs);

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

shahryari
پنج شنبه 24 مرداد 1392, 16: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, 18: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, 09:19 صبح
اقا این کد تمام درایومو ریخت بهم :( :( پوشه هام دیگه باز نمیشه access denied میده
توی access rules به یوزرم Full Control دادم ولی باز نمیشه
:اشتباه:
من توی درایو E خیلی فایل دارم چیکار کنم ؟ :((((

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

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

Mahmoud.Afrad
جمعه 25 مرداد 1392, 12: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, 17:43 عصر
چجوری فایل های درایو E درست کنم همشون خراب شدن همه Access Denied میدن از توی Access بهشون Fullcontrol دادم ولی نمیشه
خدایی یکی راهنمایی کنه

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

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

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

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

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

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

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

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


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

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

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