public static string GetMacAddress() { string addr = ""; int cb; ASTAT adapter; NCB Ncb = new NCB(); char uRetCode; LANA_ENUM lenum; Ncb.ncb_command = (byte)NCBCONST.NCBENUM; cb = Marshal.SizeOf(typeof(LANA_ENUM)); Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode != (short)NCBCONST.NRC_GOODRET) { return(""); } for (int i = 0; i < lenum.length; i++) { Ncb.ncb_command = (byte)NCBCONST.NCBRESET; Ncb.ncb_lana_num = lenum.lana[i]; uRetCode = Win32API.Netbios(ref Ncb); if (uRetCode != (short)NCBCONST.NRC_GOODRET) { return(""); } Ncb.ncb_command = (byte)NCBCONST.NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; Ncb.ncb_callname[0] = (byte)'*'; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * (int)NCBCONST.NUM_NAMEBUF; Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode == (short)NCBCONST.NRC_GOODRET) { if (i > 0) { addr += "-"; } addr = string.Format("{0,2:X}-{1,2:X}-{2,2:X}-{3,2:X}-{4,2:X}-{5,2:X}", adapter.adapt.adapter_address[0], adapter.adapt.adapter_address[1], adapter.adapt.adapter_address[2], adapter.adapt.adapter_address[3], adapter.adapt.adapter_address[4], adapter.adapt.adapter_address[5]); } } return(addr); }
static string GetMacAddress() { string addr = ""; try { int cb; ASTAT adapter; NCB Ncb = new NCB(); char uRetCode; LANA_ENUM lenum; Ncb.ncb_command = (byte)NCBCONST.NCBENUM; cb = Marshal.SizeOf(typeof(LANA_ENUM)); Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode != (short)NCBCONST.NRC_GOODRET) return ""; for (int i = 0; i < lenum.length; i++) { Ncb.ncb_command = (byte)NCBCONST.NCBRESET; Ncb.ncb_lana_num = lenum.lana[i]; uRetCode = Win32API.Netbios(ref Ncb); if (uRetCode != (short)NCBCONST.NRC_GOODRET) return ""; Ncb.ncb_command = (byte)NCBCONST.NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; Ncb.ncb_callname[0] = (byte)'*'; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * (int)NCBCONST.NUM_NAMEBUF; Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode == (short)NCBCONST.NRC_GOODRET) { if (i > 0) addr += ":"; addr = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", adapter.adapt.adapter_address[0], adapter.adapt.adapter_address[1], adapter.adapt.adapter_address[2], adapter.adapt.adapter_address[3], adapter.adapt.adapter_address[4], adapter.adapt.adapter_address[5]); } } } catch { } return addr.Replace(' ', '0'); }
public string GetMacAddress2() { string str = ""; try { NCB ncb = new NCB { ncb_command = 0x37 }; int cb = Marshal.SizeOf(typeof(LANA_ENUM)); ncb.ncb_buffer = Marshal.AllocHGlobal(cb); ncb.ncb_length = (ushort)cb; char ch = Win32API.Netbios(ref ncb); LANA_ENUM lana_enum = (LANA_ENUM)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (ch != '\0') { return(""); } for (int i = 0; i < lana_enum.length; i++) { ASTAT astat; ncb.ncb_command = 50; ncb.ncb_lana_num = lana_enum.lana[i]; if (Win32API.Netbios(ref ncb) != '\0') { return(""); } ncb.ncb_command = 0x33; ncb.ncb_lana_num = lana_enum.lana[i]; ncb.ncb_callname[0] = 0x2a; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + (Marshal.SizeOf(typeof(NAME_BUFFER)) * 30); ncb.ncb_buffer = Marshal.AllocHGlobal(cb); ncb.ncb_length = (ushort)cb; ch = Win32API.Netbios(ref ncb); astat.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (ch == '\0') { if (i > 0) { str = str + ":"; } str = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", new object[] { astat.adapt.adapter_address[0], astat.adapt.adapter_address[1], astat.adapt.adapter_address[2], astat.adapt.adapter_address[3], astat.adapt.adapter_address[4], astat.adapt.adapter_address[5] }); } } } catch { } return(str.Replace(' ', '0')); }
public static string GetMacAddress() { string text = ""; try { NCB ncb = default(NCB); ncb.ncb_command = 55; int num = Marshal.SizeOf(typeof(LANA_ENUM)); ncb.ncb_buffer = Marshal.AllocHGlobal(num); ncb.ncb_length = (ushort)num; char num2 = Win32API.Netbios(ref ncb); LANA_ENUM lANA_ENUM = (LANA_ENUM)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (num2 != 0) { return(""); } for (int i = 0; i < lANA_ENUM.length; i++) { ncb.ncb_command = 50; ncb.ncb_lana_num = lANA_ENUM.lana[i]; if (Win32API.Netbios(ref ncb) != 0) { return(""); } ncb.ncb_command = 51; ncb.ncb_lana_num = lANA_ENUM.lana[i]; ncb.ncb_callname[0] = 42; num = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * 30; ncb.ncb_buffer = Marshal.AllocHGlobal(num); ncb.ncb_length = (ushort)num; char num3 = Win32API.Netbios(ref ncb); ASTAT aSTAT = default(ASTAT); aSTAT.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure(ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(ncb.ncb_buffer); if (num3 == '\0') { if (i > 0) { text += ":"; } text = string.Format("{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", aSTAT.adapt.adapter_address[0], aSTAT.adapt.adapter_address[1], aSTAT.adapt.adapter_address[2], aSTAT.adapt.adapter_address[3], aSTAT.adapt.adapter_address[4], aSTAT.adapt.adapter_address[5]); } } } catch { } return(text.Replace(' ', '0')); }
public static extern char Netbios(ref NCB ncb);
public string getMacAddress() { string addr = ""; try { int cb; ASTAT adapter; NCB Ncb = new NCB(); char uRetCode; LANA_ENUM lenum; Ncb.ncb_command = (byte)NCBCONST.NCBENUM; cb = Marshal.SizeOf(typeof(LANA_ENUM)); Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode != (short)NCBCONST.NRC_GOODRET) return ""; for (int i = 0; i < lenum.length; i++) { Ncb.ncb_command = (byte)NCBCONST.NCBRESET; Ncb.ncb_lana_num = lenum.lana[i]; uRetCode = Win32API.Netbios(ref Ncb); if (uRetCode != (short)NCBCONST.NRC_GOODRET) return ""; Ncb.ncb_command = (byte)NCBCONST.NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; Ncb.ncb_callname[0] = (byte)'*'; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * (int)NCBCONST.NUM_NAMEBUF; Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure( Ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode == (short)NCBCONST.NRC_GOODRET) { if (i > 0) addr += ":"; addr = string.Format( "{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", adapter.adapt.adapter_address[0], adapter.adapt.adapter_address[1], adapter.adapt.adapter_address[2], adapter.adapt.adapter_address[3], adapter.adapt.adapter_address[4], adapter.adapt.adapter_address[5]); } } } catch { } //方法二 string str = "\n"; try { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) str += string.Format("MAC adress: {0}", mo["MacAddress"].ToString()); mo.Dispose(); } } catch{ } //方法三 IList<string> MAC = new List<string>(); string mac = "\n"; try { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) MAC.Add(mo["MacAddress"].ToString()); mo.Dispose(); } bool Bool = true; for (int i = 0; i < MAC.Count; i++) { for (int j = 0; j < MAC.Count; j++) { if (i == j) continue; if (MAC[i].Equals(MAC[j])) Bool = true; else Bool = false; if (!Bool) break; if (Bool) mac = MAC[0]; else { for (int k = 0; k < MAC.Count; k++) { bool isM = true; for (int m = 0; m <MAC.Count; m++) { if (k == m) continue; if (MAC[k].Equals(MAC[m])) { isM = false; break; } else isM = true; if (isM) { mac = MAC[k]; break; } } } } } } } catch { } return string.Format("MacAddress: {0}\n{1}\nmacAddress:{2}", addr.Replace(' ', '0') , str , mac); }
internal static extern char Netbios(ref NCB ncb);
public string getMacAddress() { string addr = ""; try { int cb; ASTAT adapter; NCB Ncb = new NCB(); char uRetCode; LANA_ENUM lenum; Ncb.ncb_command = (byte)NCBCONST.NCBENUM; cb = Marshal.SizeOf(typeof(LANA_ENUM)); Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); lenum = (LANA_ENUM)Marshal.PtrToStructure(Ncb.ncb_buffer, typeof(LANA_ENUM)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode != (short)NCBCONST.NRC_GOODRET) { return(""); } for (int i = 0; i < lenum.length; i++) { Ncb.ncb_command = (byte)NCBCONST.NCBRESET; Ncb.ncb_lana_num = lenum.lana[i]; uRetCode = Win32API.Netbios(ref Ncb); if (uRetCode != (short)NCBCONST.NRC_GOODRET) { return(""); } Ncb.ncb_command = (byte)NCBCONST.NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; Ncb.ncb_callname[0] = (byte)'*'; cb = Marshal.SizeOf(typeof(ADAPTER_STATUS)) + Marshal.SizeOf(typeof(NAME_BUFFER)) * (int)NCBCONST.NUM_NAMEBUF; Ncb.ncb_buffer = Marshal.AllocHGlobal(cb); Ncb.ncb_length = (ushort)cb; uRetCode = Win32API.Netbios(ref Ncb); adapter.adapt = (ADAPTER_STATUS)Marshal.PtrToStructure( Ncb.ncb_buffer, typeof(ADAPTER_STATUS)); Marshal.FreeHGlobal(Ncb.ncb_buffer); if (uRetCode == (short)NCBCONST.NRC_GOODRET) { if (i > 0) { addr += ":"; } addr = string.Format( "{0,2:X}{1,2:X}{2,2:X}{3,2:X}{4,2:X}{5,2:X}", adapter.adapt.adapter_address[0], adapter.adapt.adapter_address[1], adapter.adapt.adapter_address[2], adapter.adapt.adapter_address[3], adapter.adapt.adapter_address[4], adapter.adapt.adapter_address[5]); } } } catch { } //方法二 string str = "\n"; try { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { str += string.Format("MAC adress: {0}", mo["MacAddress"].ToString()); } mo.Dispose(); } } catch { } //方法三 IList <string> MAC = new List <string>(); string mac = "\n"; try { ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"] == true) { MAC.Add(mo["MacAddress"].ToString()); } mo.Dispose(); } bool Bool = true; for (int i = 0; i < MAC.Count; i++) { for (int j = 0; j < MAC.Count; j++) { if (i == j) { continue; } if (MAC[i].Equals(MAC[j])) { Bool = true; } else { Bool = false; } if (!Bool) { break; } if (Bool) { mac = MAC[0]; } else { for (int k = 0; k < MAC.Count; k++) { bool isM = true; for (int m = 0; m < MAC.Count; m++) { if (k == m) { continue; } if (MAC[k].Equals(MAC[m])) { isM = false; break; } else { isM = true; } if (isM) { mac = MAC[k]; break; } } } } } } } catch { } return(string.Format("MacAddress: {0}\n{1}\nmacAddress:{2}", addr.Replace(' ', '0'), str, mac)); }