电竞比分网-中国电竞赛事及体育赛事平台

分享

C#獲取本機(jī)和其它計(jì)算機(jī)物理網(wǎng)卡地址(MAC)

 緣木求魚(yú)001 2012-09-27
 C#獲取本機(jī)和其它計(jì)算機(jī)物理網(wǎng)卡地址(MAC) 
 
 
 
驗(yàn)證計(jì)算機(jī)MAC地址進(jìn)行軟件授權(quán)是一種通用的方法,C#可以輕松獲取計(jì)算機(jī)的MAC地址,本文采用實(shí)際的源代碼講述了兩種獲取網(wǎng)卡的方式,第一種 方法使用ManagementClass類,只能獲取本機(jī)的計(jì)算機(jī)網(wǎng)卡物理地址,第二種方法使用Iphlpapi.dll的SendARP方法,可以獲取 本機(jī)和其它計(jì)算機(jī)的MAC地址。 
    方法1:使用ManagementClass類 
          示例: 
 
/// 獲取網(wǎng)卡物理地址 
/// </summary> 
/// <returns></returns> 
public static string getMacAddr_Local() 

    string madAddr = null
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection moc2 = mc.GetInstances(); 
    foreach (ManagementObject mo in moc2) 
    { 
        if (Convert.ToBoolean(mo["IPEnabled"]) == true
        { 
            madAddr = mo["MacAddress"].ToString(); 
            madAddr = madAddr.Replace(':''-'); 
        } 
        mo.Dispose(); 
    } 
    return madAddr; 

說(shuō)明: 
 
   1.需要給項(xiàng)目增加引用:System.Management,如圖: 
 
    2.在程序開(kāi)始添加包引入語(yǔ)句:using System.Management; 
 
    3.本方案只能獲取本機(jī)的MAC地址; 
    方法2:使用SendARP類 
          示例: 
 
     
//下面一種方法可以獲取遠(yuǎn)程的MAC地址 
[DllImport("Iphlpapi.dll")] 
static extern int SendARP(Int32 DestIP, Int32 SrcIP, ref Int64 MacAddr, ref Int32 PhyAddrLen); 
[DllImport("Ws2_32.dll")] 
static extern Int32 inet_addr(string ipaddr);         
/// <summary> 
/// SendArp獲取MAC地址 
/// </summary> 
/// <param name="RemoteIP">目標(biāo)機(jī)器的IP地址如(192.168.1.1)</param> 
/// <returns>目標(biāo)機(jī)器的mac 地址</returns> 
public static string getMacAddr_Remote(string RemoteIP) 

    StringBuilder macAddress = new StringBuilder(); 
    try 
    { 
        Int32 remote = inet_addr(RemoteIP); 
        Int64 macInfo = new Int64(); 
        Int32 length = 6
        SendARP(remote, 0ref macInfo, ref length); 
        string temp = Convert.ToString(macInfo, 16).PadLeft(12'0').ToUpper(); 
        int x = 12
        for (int i = 0; i < 6; i++) 
        { 
            if (i == 5
            { 
                macAddress.Append(temp.Substring(x - 22)); 
            } 
            else 
            { 
                macAddress.Append(temp.Substring(x - 22) + "-"); 
            } 
            x -= 2
        } 
        return macAddress.ToString(); 
    } 
    catch 
    { 
        return macAddress.ToString(); 
    } 

說(shuō)明: 
 
    1.在程序開(kāi)始添加包引入語(yǔ)句:using System.Runtime.InteropServices; 
 
    2.該方法可以獲取遠(yuǎn)程計(jì)算機(jī)的MAC地址; 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多