当前位置:编程学习 > C#/ASP.NET >>

C#如何用调用API获取计算机的硬盘序列号

注意是硬盘序列号,即sn号,不是ID号。我试过使用WMI的方法,不太好使用,有的计算机能获取,有的获取不了,不知道API的方法怎么用? --------------------编程问答-------------------- 帮定了,fingerprint
--------------------编程问答-------------------- http://www.360doc.com/content/10/0924/15/3420024_56005445.shtml

楼主可以参考下  --------------------编程问答--------------------


private string[] GetMoc()
        {
            string[] str = new string[3];
            ManagementClass mcCpu = new ManagementClass("win32_Processor");
            ManagementObjectCollection mocCpu = mcCpu.GetInstances();
            foreach(ManagementObject m in mocCpu)
            {
                str[0] = m["ProcessorId"].ToString();
            }

            ManagementClass mcHD = new ManagementClass("win32_logicaldisk");
            ManagementObjectCollection mocHD = mcHD.GetInstances();
            foreach(ManagementObject m in mocHD)
            {
                if(m["DeviceID"].ToString() == "C:")
                {
                    str[1] = m["VolumeSerialNumber"].ToString();
                    break;
                }
            }

            ManagementClass mcMAC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection mocMAC = mcMAC.GetInstances();
            foreach(ManagementObject m in mocMAC)
            {
                if((bool)m["IPEnabled"])
                {
                    str[2] = m["MacAddress"].ToString();
                    break;
                }
            }

            return str;
        }
--------------------编程问答-------------------- http://www.cnblogs.com/cloudstep/archive/2010/01/28/1658770.html --------------------编程问答-------------------- 先添加引用 System.Management.dll
 

using System.Management;



 //取第一块硬盘编号 
        public String GetHardDiskID()
        {
            try
            {
                ManagementObjectSearcher wmiSearcher = new ManagementObjectSearcher();

                wmiSearcher.Query = new SelectQuery("Win32_DiskDrive","",new string[] { "PNPDeviceID" }                );
                ManagementObjectCollection myCollection = wmiSearcher.Get();
                ManagementObjectCollection.ManagementObjectEnumerator em =
                myCollection.GetEnumerator();
                em.MoveNext();
                ManagementBaseObject mo = em.Current;
                string id = mo.Properties["PNPDeviceID"].Value.ToString().Trim();
                return id;  

            }
            catch(Exception ex)
            {
                return "";
            }
        }//end  

--------------------编程问答-------------------- 看清楚,我说过WMI不稳定,有的计算机可以取到硬盘序列号,有的取不到。我自己已经搞定了,用的API。 --------------------编程问答-------------------- 怎么调用第三方api,我尝试了,但VS不认那些类 --------------------编程问答-------------------- 可以调用api的。搞定了? --------------------编程问答-------------------- 怎么搞定的用什么api啊
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,