首页

文章

c#怎样获取u盘序列号

发布网友 发布时间:2022-03-24 10:31

我来回答

2个回答

热心网友 时间:2022-03-24 12:01

首先需添加对System.Management的引用。

using System;   
using System.Runtime.InteropServices;   
using System.Management;   
  
namespace Hardware   
{   
    /// <summary>   
    /// HardwareInfo 的摘要说明。   
    /// </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 byte rev_major;   
            public byte reserved0;   
            public byte adapter_type;   
            public byte rev_minor;   
            public ushort ration;   
            public ushort frmr_recv;   
            public ushort frmr_xmit;   
            public ushort iframe_recv_err;   
            public ushort xmit_aborts;   
            public uint xmit_success;   
            public uint recv_success;   
            public ushort iframe_xmit_err;   
            public ushort recv_buff_unavail;   
            public ushort t1_timeouts;   
            public ushort ti_timeouts;   
            public uint reserved1;   
            public ushort free_ncbs;   
            public ushort max_cfg_ncbs;   
            public ushort max_ncbs;   
            public ushort xmit_buf_unavail;   
            public ushort max_dgram_size;   
            public ushort pending_sess;   
            public ushort max_cfg_sess;   
            public ushort max_sess;   
            public ushort max_sess_pkt_size;   
            public ushort name_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 byte ncb_command;   
            public byte ncb_retcode;   
            public byte ncb_lsn;   
            public byte ncb_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 byte ncb_rto;   
            public byte ncb_sto;   
            public IntPtr ncb_post;   
            public byte ncb_lana_num;   
            public byte ncb_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');   
        }   
    }   
}

使用方法举例:

//获取硬盘序列号   
Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();   
string hardDiskID = hardwareInfo.GetHardDiskID();   
System.Console.WriteLine(hardDiskID);   
  
//获取CPU序列号   
string cpuID = hardwareInfo.GetCpuID();   
System.Console.WriteLine(cpuID);   
//获取硬盘序列号Hardware.HardwareInfo hardwareInfo = new Hardware.HardwareInfo();string hardDiskID = hardwareInfo.GetHardDiskID();System.Console.WriteLine(hardDiskID);//获取CPU序列号string cpuID = hardwareInfo.GetCpuID();System.Console.WriteLine(cpuID);


转自:CSDN《使用C#获取CPU及硬盘序列号的源代码》 -- songkexin

热心网友 时间:2022-03-24 13:19

当然是看也区别
2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 怎样读出U盘序列号 如何查看U盘的详细信息 怎么看U盘是否是正版? 怎样查询工商银行u盾的序列号 u盘序列号怎么查 U盘序列号怎么获取?怎么清楚U盘插拔痕迹? U盘序列号查询软件怎么用 07版cad,u盘上的序列号怎么找? 电脑硬盘序列号和系统安装日期怎么查 如何查询硬盘和U盘序列号? U盘序列号如何查询 怎样查U盘的序列号 u盘序列号怎么查,查看u盘序列号的方法 电脑里怎么查询使用过的u盘序列号? 乐视手机账号怎么更改? 手机号被注销,乐视手机帐号怎么解绑手机号 怎么样解绑乐视手机号? 乐视手机绑定了帐号怎么清除 乐视手机账号问题 乐视2手机有帐号怎么取消? u盘中毒怎么杀毒 U盘好像中毒了,怎么彻底杀毒? u盘中毒了怎么杀毒 U盘中毒了怎么办? U盘中毒了,要怎么杀毒? u盘中毒怎么办 U盘中毒了,怎样来杀毒呢? U盘中毒 无法识别 怎么杀毒? 我的U盘中毒了怎么杀毒? 如何对已中毒的U盘进行杀毒? u盘中毒了怎么办 u盘中毒了,是屏幕保护程序的病毒,怎么清理?我都快烦死了! u盘中毒了文件没有了怎么办 u盘中毒了,文件都变成乱码了,怎么修复回来啊? U盘中毒怎么杀毒? U盘中毒后怎样彻底杀毒? U盘中毒了如何杀毒? usb3.1接口和usb3.0接口的区别 usb3.1和3.0的接口一样吗 U盘的3.0和3.1接口有什么不同
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com