PDA

View Full Version : سوال: تشخصی فیزیکی یا مجازی بودن کارت شبکه



ایمان اختیاری
دوشنبه 04 مرداد 1389, 17:03 عصر
روی یک سیستم که هم کارت شبکه ی فیزیکی نصبه هم کارت شبکه ی مجازی چطور می شه نوع اونا رو فهمید ؟

razeghi_loved
چهارشنبه 06 مرداد 1389, 11:51 صبح
اگر پشت خود سیستم هستی می تونی وقتی ipconfig /all بزنی مشخصات کاملی بهت می ده که جلوی اون کارت شبکه مجازی یا loop back می نویسه یا لاجیکال
و در ضمن می تونی از مک آدرس هم استفاده کنی با دستور getmac آدرس مک رو سرچ کن تو اینترنت ببین وجود دارد یا نه

ایمان اختیاری
چهارشنبه 06 مرداد 1389, 12:19 عصر
مرسی از پاسختون
من از این قطعه کد استفاده می کنم ولی وقتی توی سیستمی دوجور کارت شبکه نصب باشه ( یکی واقعی و یکی مجازی ) درست کار نمی کنه
می تونید کمک کنید :

string mac = "";
string temp = "";
string temp2 = "";
ManagementObjectSearcher searcher;
string qry = "select * FROM Win32_NetworkAdapter";
searcher = new ManagementObjectSearcher(qry);
foreach (ManagementObject wmi_HD in searcher.Get())
{
if (wmi_HD["MacAddress"] != null)
{
//MessageBox.Show(wmi_HD["MacAddress"].ToString());
temp = wmi_HD["MacAddress"].ToString();
temp2 = wmi_HD["Description"].ToString();
}
//if (temp.Substring(0, 2) == "00")
// mac = temp;
if (temp2.IndexOf("Ethernet") != -1)
mac = temp;

}

return mac;

razeghi_loved
چهارشنبه 06 مرداد 1389, 12:28 عصر
شرمنده نمی دونم چه طوری می تونم کمکت کنم برو تو قسمت برنامه نویسی اونجا مطرح کن سوالتو

ایمان اختیاری
چهارشنبه 06 مرداد 1389, 12:35 عصر
فکر کنم الان اونجا مطرح کردم

Saeed.Masoumi
چهارشنبه 06 مرداد 1389, 21:08 عصر
سلام
ببینید دوست عزیزمن در جای دیگه هم به همین سوال شما جواب دادم(اینجا (http://barnamenevis.org/forum/showthread.php?t=229553)).نمی دونم چرا شما دوست دارید از اون روش استفاده کنید درحالی که خود سی شارپ این امکان را برای شما محیا ساخته است.
ولی یک بار دیگه اینجا هم می گم (این کار هایی که می گم کامل انجام بدین ببینید به چیزی که می خواین می رسین یا نه):

این هدر ها رو اضافه کنید:


using System;
using System.Linq;
using System.Windows.Forms;


سپس کد زیر را در متد مورد نظرتان بنویسید:


var Query = from NetworkInterface in System.Net.NetworkInformation.NetworkInterface.Get AllNetworkInterfaces() select NetworkInterface;
foreach (var NetworkInterface in Query)
{
MessageBox.Show("Physical Address: " + NetworkInterface.GetPhysicalAddress() +
"\nID:"+NetworkInterface.Id+"\nName: "+NetworkInterface.Name+ "\nInterface Type: " +
NetworkInterface.NetworkInterfaceType.ToString() + "\nDescription: " +
NetworkInterface.Description,"Properties");
}


حالا ببین اون چیزی که می خوای بهت می ده یا نه.
موفق باشید

ایمان اختیاری
شنبه 09 مرداد 1389, 10:19 صبح
جناب معصومی از توجهتون متشکرم .. اتفاقا توی اون پست هم می خواستم این مشکل رو بیان کنم فکر کنم یادم رفت این بود که دوباره تاپیک جدید زدم ..
ببینید .. وقتی کد شما رو اجرا کردم نتایج زیر رو داشتم که پیوست شده .. روی سیستم من هم vmware نصبه هم virtual box .. این برنامه ها هم یک کارت شبکه ی مجازی به سیستم اضافه می کنن .. با کد شما نوع اینترفیس این کارت شبکه ها به عنوان Ethernet شناخته شده .. فقط یه مورده که کارت شبکه ی حقیقیه ..
حالا چطور می شه بین این موارد تفکیک قائل شد؟ .. چون برنامه نهایی روی سیستم هایی نصب می شه که نمی دونم چه نوع کارت شبکه هایی ممکنه روشون باشه ..

Saeed.Masoumi
یک شنبه 10 مرداد 1389, 01:36 صبح
سلام
در حال حاضر من اون نرم افزار ها رو ندارم.

بروید داخل Regedit و آدرس زیر رو دنبال کنید ببینید ID مربوط به کارت شبکه های مجازی ,در داخل InterfaceList ثبت شده است یا خیر اگر ثبت نشده باشد که مشکل حل می شود.


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\EAPOL\Parame ters\General


سوال:آیا همیشه درقسمت توضیحات مربوط به کارتهای مجازی عبارت Virtual دیده می شود یا فقط در این دو نرم افزار اینگونه است؟

ایمان اختیاری
سه شنبه 12 مرداد 1389, 13:25 عصر
جناب معصومی .. متشکرم از راهنماییتون .. و مخصوصا اون سوال آخر .. من روی همون مورد مانور دادم و کد زیر رو نوشتم . تا اونجایی که برای کار من نیاز بود جواب داد .. راستی اون آدرس رجیستر هم نیگا کردم .. توی سون چنین چیزی نبود یه ادرس دیگه بود که اطلاعاتش واقعا زیاد و نا مفهموم - البته برای من - بود .. بازم ازتون متشکرم

string t2, t3;

var Query = from NetworkInterface in System.Net.NetworkInformation.NetworkInterface.Get AllNetworkInterfaces() select NetworkInterface;
foreach (var NetworkInterface in Query)
{



t2 = NetworkInterface.NetworkInterfaceType.ToString();
t3 = NetworkInterface.Description;


if (t2.ToString().ToLower() == "ethernet" && (t3.IndexOf("Virtual") == -1))
{
MessageBox.Show("Physical Address: " + NetworkInterface.GetPhysicalAddress() +
"\nID:"+NetworkInterface.Id+"\nName: "+NetworkInterface.Name+ "\nInterface Type: " +
NetworkInterface.NetworkInterfaceType.ToString() + "\nDescription: " +
NetworkInterface.Description,"Properties");

}
}