本機資訊與區域網路資訊的擷取,需要用到Management這個類,這個類的功能十分強大,可以實現的事情也很多,下面我來列舉部分實現本機與區域網路資訊的例子。
首先對項目添加System.Management引用,然後在代碼上面輸入using System.Management
下面來看看如何取得本機資訊:
private static string ipAddress = "";
static void Main(string[] args)
{
string macAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mac = mc.GetInstances();
foreach (ManagementObject mo in mac)
{
if ((bool)mo["IPEnabled"] == true)
{
macAddress += mo["MacAddress"].ToString();
}
}
macAddress = macAddress.Replace(':', '-');
IPAddress[] ipAddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < ipAddressList.Length; i++)
{
ipAddress += ipAddressList[i].ToString();
}
Console.WriteLine(macAddress); //MacAddress
Console.WriteLine(ipAddress); //IPAddress
Console.WriteLine(Dns.GetHostName()); //HostName
Console.WriteLine(Environment.UserName); //UserName
Console.WriteLine(Environment.UserDomainName); //DomainName
Console.ReadLine();
}
上面有代碼會輸出如下資訊:
00-1E-C9-29-59-D7
192.168.1.1
NON-Alex
Alex
CompanyLan
下面是通過IP進行判斷,區域網路裡面的本網段主機:
private static void HostsInit()
{
IPHostEntry host = new IPHostEntry();
string fristIP = ipAddress.Substring(0, ipAddress.LastIndexOf('.') + 1);
for (int i = 100; i <= 254; i++)
{
Dns.BeginGetHostByName(fristIP + i, new AsyncCallback(HostsInitCallback), host);
}
}
private static void HostsInitCallback(IAsyncResult ar)
{
try
{
IPHostEntry host = Dns.EndGetHostByName(ar);
IPHostEntry host1 = Dns.GetHostByAddress(host.AddressList[0]);
if (host1.HostName.Trim() != Dns.GetHostName())
{
Console.WriteLine("列出區域網路本網段的電腦主機名稱:");
Console.WriteLine(host1.HostName);
//在這裡把檔案神不知鬼不覺的複製給他們,
//這裡我只實現了共用的或對應磁碟機傳送,
//如果你公司的電腦是組成一個域的,那麼強制傳送檔案也是可以實現的(因為我們是公司IT先鋒,總會知道域裡超級使用者與密碼),
//不知那個園友來補充,無論怎樣都是強制的傳送給他們
}
}
catch { }
}
上面有代碼會輸出如下資訊:
NON-ITLi
NON-CSLisa
下載代碼
/Files/whtydn/ConsoleApplication1.rar