using System; using System.Runtime.InteropServices; usingSystem.Management; namespace Hardware { /// <summary> /// Hardware_Mac 的摘要说明。 /// </summary> public class HardwareInfo { //取机器名 public string GetHostName() { return System.Net.Dns.GetHostName(); }
//取CPU编号 public String GetCpuID() { try { ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances();
String strCpuID = null ; foreach( ManagementObject mo in moc ) { strCpuID = mo.Properties["ProcessorId"].Value.ToString(); break; } return strCpuID; } catch { return ""; }
}//end method
//取第一块硬盘编号 public String GetHardDiskID() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia"); String strHardDiskID = null ; foreach(ManagementObject mo in searcher.Get()) { strHardDiskID = mo["SerialNumber"].ToString().Trim(); break; } return strHardDiskID ; } catch { return ""; } }//end
public enum NCBCONST { NCBNAMSZ=16,/* absolute length of a net name*/ MAX_LANA=254,/* lana's in range 0 to MAX_LANA inclusive*/ NCBENUM=0x37,/* NCB ENUMERATE LANA NUMBERS*/ NRC_GOODRET=0x00,/* good return*/ NCBRESET=0x32,/* NCB RESET*/ NCBASTAT=0x33,/* NCB ADAPTER STATUS*/ NUM_NAMEBUF =30,/* Number of NAME's BUFFER*/ }
[StructLayout(LayoutKind.Sequential)] public struct ADAPTER_STATUS { [MarshalAs(UnmanagedType.ByValArray, SizeConst=6)] public byte[] adapter_address; public byterev_major; public bytereserved0; public byteadapter_type; public byterev_minor; public ushortduration; public ushortfrmr_recv; public ushortfrmr_xmit; public ushortiframe_recv_err; public ushortxmit_aborts; public uintxmit_success; public uintrecv_success; public ushortiframe_xmit_err; public ushortrecv_buff_unavail; public ushortt1_timeouts; public ushortti_timeouts; public uintreserved1; public ushortfree_ncbs; public ushortmax_cfg_ncbs; public ushortmax_ncbs; public ushortxmit_buf_unavail; public ushortmax_dgram_size; public ushortpending_sess; public ushortmax_cfg_sess; public ushortmax_sess; public ushortmax_sess_pkt_size; public ushortname_count; }
[StructLayout(LayoutKind.Sequential)] public struct NAME_BUFFER { [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] public byte[] name; public byte name_num; public byte name_flags; }
[StructLayout(LayoutKind.Sequential)] public struct NCB { public bytencb_command; public bytencb_retcode; public bytencb_lsn; public bytencb_num; public IntPtr ncb_buffer; public ushort ncb_length; [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] public byte[]ncb_callname; [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NCBNAMSZ)] public byte[]ncb_name; public bytencb_rto; public bytencb_sto; public IntPtr ncb_post; public bytencb_lana_num; public bytencb_cmd_cplt; [MarshalAs(UnmanagedType.ByValArray, SizeConst=10)] public byte[] ncb_reserve; public IntPtr ncb_event; }
[StructLayout(LayoutKind.Sequential)] public struct LANA_ENUM { public byte length; [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.MAX_LANA)] public byte[] lana; }
[StructLayout(LayoutKind.Auto)] public struct ASTAT { public ADAPTER_STATUS adapt; [MarshalAs(UnmanagedType.ByValArray, SizeConst=(int)NCBCONST.NUM_NAMEBUF)] public NAME_BUFFER[] NameBuff; } public class Win32API { [DllImport("NETAPI32.DLL")] 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 {} return addr.Replace(' ', '0'); }
} } |
相关推荐
根据提供的文件信息,本文将详细解释如何在C#中获取硬件标识符,包括主机名、CPU标识符以及硬盘标识符等内容。这些标识符通常用于识别特定的计算机硬件配置,对于软件授权、设备管理等方面有着重要的作用。 ### ...
在C#中,可以使用以下方法获取: ```csharp using System.Net.NetworkInformation; // 获取网卡的第一个MAC地址 PhysicalAddress macAddress = NetworkInterface.GetAllNetworkInterfaces() .FirstOrDefault(n =>...
使用C#代码取得 取机器名 取CPU编号 获取硬盘序列号 获取MAC和ID
如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在...
如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在...
选择哪个版本并不关键,因为它们的基本操作相似,主要取决于个人计算机的配置。Visual Studio 2010对硬件要求较高,若电脑性能允许,可以选择该版本;否则,2008版是更经济的选择。 Web开发的学习路径应遵循一定的...
首先,我们可以从计算机的历史开始,1946年2月15日,ENIAC的诞生标志着电子计算机时代的开启。从第一代的电子管计算机到第四代的大规模、超大规模集成电路计算机,计算机在速度、精度、存储能力、逻辑判断力和可靠性...
在51单片机中,复位后,SP(堆栈指针)的初始值通常为07H,PC(程序计数器)的值被清零,I/O口的初始状态取决于硬件设计。单片机有四个工作寄存器区,这些区域的切换由PSW(程序状态字)中的RS0和RS1两位的状态决定...
20世纪50年代至70年代,高级语言的出现标志着计算机语言的一次重大飞跃。高级语言更接近于人类的自然语言,使用的是英文单词和数学公式式的语句,使得编程更加符合人的思维习惯。C语言作为高级语言的代表,不仅广泛...
22. 计算机程序设计语言:Java、C++、C#等都是高级语言,而机器语言是直接对应硬件的低级语言。 23. 数据通信系统模型:由数据源、数据通信网和数据宿三部分组成。 24. RAM特点:RAM是随机存取存储器,可以读写,...
计算机应用基础涵盖了许多关键知识点,这些知识是理解和使用...总的来说,计算机应用基础是理解现代信息技术的基础,涵盖硬件、软件、网络、数据库和编程等多个方面,这些知识对于日常生活和工作中使用计算机至关重要。
1. **计算机历史**:1946年2月15日,ENIAC(埃尼阿克)在美国宾夕法尼亚大学诞生,标志着电子计算机的诞生。计算机经历了电子管、晶体管、集成电路以及大规模和超大规模集成电路四个主要发展阶段,性能不断提升,...
7. 分辨率与颜色数:计算机中的分辨率和颜色数由显示卡设定,但实际显示效果取决于显示器的性能。 8. 第二代计算机元件:第二代电子计算机主要采用晶体管作为元件,取代了第一代的真空管。 9. 文本框属性:文本框...
在ESRI开发用户大会中,Silverlight API(ArcGIS API for Silverlight)的发布标志着GIS技术与Web应用深度融合的新篇章。通过学习和运用Silverlight API,开发者能够构建既功能强大又用户体验优秀的GIS Web应用,...
- **数据位(Data Bits)**:实际传输的数据位数,可以是5、6、7或8位,具体取决于通信协议。 - **停止位(Stop Bit)**:标志数据帧的结束,可以是1位、1.5位或2位。 - **波特率(Baud Rate)**:表示数据传输的速度,...
| 0 | 开始标志位 | v1.0:0xFE (v0.9:0x55) | 用于标识一个有效的MavLink数据包 | | 1 | 载荷长度 | 0~255 | 表示有效载荷的长度 | | 2 | 数据包序列号 | 0~255 | 每个组件对其发送序列计数,允许丢包检查 | | 3 | ...
**解释**:在 Java 或 C# 等面向对象的语言中,集合只能存储引用类型的数据,而不是基本数据类型。例如,在 Java 中,集合只能存储 `Integer` 而不是 `int`。 **示例**:题目中的说法“集合中不能存放基本数据类型...
同时,由于 Java、C# 等语言的兴起和硬件成本的下降,C++ 在用户级程序开发领域的地位逐渐被替代,更多地转向系统级别的程序开发。 3. **第三阶段(2000年至今)**:产生了许多新的编程技术和库,例如 Loki、MPL 等...
- **B 项正确解析**:第二代电子计算机(大约1956年至1963年)使用晶体管作为主要逻辑元件,这标志着从第一代使用电子管的计算机向更高效、更小型化的技术转变。 ### 5. ASP.NET 支持的语言 **题目内容:** 以下哪...