PDA

View Full Version : سوال: به دست آوردن نام پارتیشن های کامپیوترها در شبکه



sadaf_
پنج شنبه 17 اسفند 1391, 10:41 صبح
چطوری می تونم نام سیستم مقصد را بدم و لیست پارتیشنهای اون را به دست بیارم؟
ممنون

RED-C0DE
جمعه 18 اسفند 1391, 00:43 صبح
اولا اینکه منظورتون دقیقا آیا لیست پارتیشن هاست یا لیستی از Volume ها یا همون درایو های روی یک سیستم؟
خود برگردوندن لیست اسامی درایوها و پارتیشن ها کاری نداره.چند راهشو می گم:

با استفاده از متودهای زیر :
Environment:
string[] drivesName = Environment.GetLogicalDrives();


System.IO:
DriveInfo[] allDrivesInfo = DriveInfo.GetDrives();


WMI:
private const double _BYTES_IN_GIG = 1073741824;

private void button1_Click(object sender, EventArgs e)
{
// اگه بخواین لیست درایو ها رو از یک سیستم دیگه غیر از سیستم محلی بگیرین نیاز دارین برای این کار، ب اینصورت زیر، احراز هویت کنین
// در غیر اینصورت اگه بخواین لوکال کار کنین نیازی ب این کار نیست
ConnectionOptions con2TargetOrMayBVictim = new ConnectionOptions
{
Username = "TargetSystemUserName",
Password = "TargetSystemPassword"
};
ManagementScope scope = new ManagementScope("\\TargetSystem", con2TargetOrMayBVictim);

ObjectQuery queryEnumerateLogicalDisks = new ObjectQuery("SELECT FreeSpace,Size,Name FROM Win32_LogicalDisk");
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher( scope,queryEnumerateLogicalDisks);
ManagementObjectCollection logicalDrives= moSearcher.Get();

foreach (ManagementObject volumeInfo in logicalDrives)
{
// size , freespace is in byte, convert to Gigabyte
MessageBox.Show(string.Format("VolumeName:{0} Size:{1:0.00} FreeSpace:{2:0.00}"
, volumeInfo["Name"]
, ((ulong)volumeInfo["Size"] / _BYTES_IN_GIG)
, ((ulong)volumeInfo["FreeSpace"] /_BYTES_IN_GIG)
));
}
}



با کمک ابزار DiskPart خود ویندوز:


http://up.iranblog.com/images/wuqun9pdxsgzmlsn84vj.gif



اما برای هدفی! ک شما دارین (بخواین این لیست رو از سیستم دیگه ای بدست بیارین) ، کارای دیگه ای باید کرد.
یا
باید بتونین برنامه ای روی سیستم مقصد نصب کنین (یکجور Listener ) ک گوش ب زنگ باشه، شما بهش درخواست/دستور بدین ، اون براتون تو سیستم هدف با مجوز محلی اجرا کنه، نتیجش رو براتون بفرسته (ک جزئیات تمام این بخش ها قابل بحثه)
یا
مجوز روی اون سیستم داشته باشین تا بتونین بصورت ریموت اجرا کنین دستوراتتون رو.
توی مثال مربوط ب WMI ک گذاشتم بالاتر، همین اتفاق می افته، یعنی با مجوزی ک رو سیستم هدف دارین می تونین لیست مورد نظر رو بدست بیارین