Đánh giá, nhận xét, review các công ty tuyển dụng
Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Lấy mã ổ cứng bằng C#

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    179

    Mặc định Lấy mã ổ cứng bằng C#

    Bác nào dành API chỉ cho em cách lấy mã của ổ cứng với. Nếu mà có code thì càng tuyệt vì em cũng gà lắm. Giúp đỡ em nhé em đang máu mà. Gà khổ thế đấy

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mã của ổ cứng là cái gì thế?
    None!

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Hi,ko rõ là bạn cần lấy mã gì thật. Còn nếu muốn xác định thông tin phần cứng máy tính có thể sử dụng namespace System.Management;
    Visual C# Code:
    1. using System;
    2. using System.Text;
    3. using System.Management;
    4.  
    5. {
    6.     public class WMI
    7.     {        
    8.         /// <summary>
    9.         /// method to retrieve the selected HDD's serial number
    10.         /// </summary>
    11.         /// <param name="strDriveLetter">Drive letter to retrieve serial number for</param>
    12.         /// <returns>the HDD's serial number</returns>
    13.         public string GetHDDSerialNumber(string drive)
    14.         {
    15.             //check to see if the user provided a drive letter
    16.             //if not default it to "C"
    17.             if (drive == "" || drive == null)
    18.             {
    19.                 drive = "C";
    20.             }
    21.             //create our ManagementObject, passing it the drive letter to the
    22.             //DevideID using WQL
    23.             ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    24.             //bind our management object
    25.             disk.Get();
    26.             //return the serial number
    27.             return disk["VolumeSerialNumber"].ToString();
    28.         }
    29.  
    30.         /// <summary>
    31.         /// method to retrieve the HDD's freespace
    32.         /// </summary>
    33.         /// <param name="drive">Drive letter to get free space from (optional)</param>
    34.         /// <returns>The free space of the selected HDD</returns>
    35.         public double GetHDDFreeSpace(string drive)
    36.         {
    37.             //check to see if the user provided a drive letter
    38.             //if not default it to "C"
    39.             if (drive == "" || drive == null)
    40.             {
    41.                 drive = "C";
    42.             }
    43.             //create our ManagementObject, passing it the drive letter to the
    44.             //DevideID using WQL
    45.             ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    46.             //bind our management object
    47.             disk.Get();
    48.             //return the free space amount
    49.             return Convert.ToDouble(disk["FreeSpace"]);
    50.         }
    51.  
    52.         /// <summary>
    53.         /// method to retrieve the HDD's size
    54.         /// </summary>
    55.         /// <param name="drive">Drive letter to get free space from (optional)</param>
    56.         /// <returns>The free space of the selected HDD</returns>
    57.         public double getHDDSize(string drive)
    58.         {
    59.             //check to see if the user provided a drive letter
    60.             //if not default it to "C"
    61.             if (drive == "" || drive == null)
    62.             {
    63.                 drive = "C";
    64.             }
    65.             //create our ManagementObject, passing it the drive letter to the
    66.             //DevideID using WQL
    67.             ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"" + drive + ":\"");
    68.             //bind our management object
    69.             disk.Get();
    70.             //return the HDD's initial size
    71.             return Convert.ToDouble(disk["Size"]);
    72.         }
    73.  
    74.         /// <summary>
    75.         /// method to find out the IPEnabled of
    76.         /// the network adapter
    77.         /// </summary>
    78.         /// <returns></returns>
    79.         public bool IsIPEnabled()
    80.         {
    81.             //create out management class object using the
    82.             //Win32_NetworkAdapterConfiguration class to get the attributes
    83.             //of the network adapter
    84.             ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration");
    85.             //create our ManagementObjectCollection to get the attributes with
    86.             ManagementObjectCollection objCol = mgmt.GetInstances();
    87.             bool enabled = false;
    88.             foreach (ManagementObject obj in objCol)
    89.             {
    90.                 //get the status of the first adapter then
    91.                 //exit the loop
    92.                 enabled = (bool)obj["IPEnabled"];
    93.                 break;
    94.                 //dispose of the object
    95.                 obj.Dispose();
    96.             }
    97.             //return the IPEnabled status
    98.             return enabled;
    99.         }
    100.  
    101.         /// <summary>
    102.         /// Returns MAC Address from first Network Card in Computer
    103.         /// </summary>
    104.         /// <returns>MAC Address in string format</returns>
    105.         public string FindMACAddress()
    106.         {
    107.             //create out management class object using the
    108.             //Win32_NetworkAdapterConfiguration class to get the attributes
    109.             //of the network adapter
    110.             ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration");
    111.             //create our ManagementObjectCollection to get the attributes with
    112.             ManagementObjectCollection objCol = mgmt.GetInstances();
    113.             string address = String.Empty;
    114.             //loop through all the objects we find
    115.             foreach (ManagementObject obj in objCol)
    116.             {
    117.                 if (address == String.Empty)  // only return MAC Address from first card
    118.                 {
    119.                     //grab the value from the first network adapter we find
    120.                     //you can change the string to an array and get all
    121.                     //network adapters found as well
    122.                     //check to see if the adapter's IPEnabled
    123.                     //equals true
    124.                     if ((bool)obj["IPEnabled"] == true)
    125.                     {
    126.                         address = obj["MacAddress"].ToString();
    127.                     }
    128.                 }
    129.                 //dispose of our object
    130.                 obj.Dispose();
    131.             }
    132.             //replace the ":" with an empty space, this could also
    133.             //be removed if you wish
    134.             address = address.Replace(":", "");
    135.             //return the mac address
    136.             return address;
    137.         }
    138.  
    139.         /// <summary>
    140.         /// method to retrieve the network adapters
    141.         /// default IP gateway using WMI
    142.         /// </summary>
    143.         /// <returns>adapters default IP gateway</returns>
    144.         public string GetDefaultIPGateway()
    145.         {
    146.             //create out management class object using the
    147.             //Win32_NetworkAdapterConfiguration class to get the attributes
    148.             //of the network adapter
    149.             ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration");
    150.             //create our ManagementObjectCollection to get the attributes with
    151.             ManagementObjectCollection objCol = mgmt.GetInstances();
    152.             string gateway = String.Empty;
    153.             //loop through all the objects we find
    154.             foreach (ManagementObject obj in objCol)
    155.             {
    156.                 if (gateway == String.Empty)  // only return MAC Address from first card
    157.                 {
    158.                     //grab the value from the first network adapter we find
    159.                     //you can change the string to an array and get all
    160.                     //network adapters found as well
    161.                     //check to see if the adapter's IPEnabled
    162.                     //equals true
    163.                     if ((bool)obj["IPEnabled"] == true)
    164.                     {
    165.                         gateway = obj["DefaultIPGateway"].ToString();
    166.                     }
    167.                 }
    168.                 //dispose of our object
    169.                 obj.Dispose();
    170.             }
    171.             //replace the ":" with an empty space, this could also
    172.             //be removed if you wish
    173.             gateway = gateway.Replace(":", "");
    174.             //return the mac address
    175.             return gateway;
    176.         }
    177.  
    178.         /// <summary>
    179.         /// Return processorId from first CPU in machine
    180.         /// </summary>
    181.         /// <returns>[string] ProcessorId</returns>
    182.         public string GetCPUId()
    183.         {
    184.             string cpuInfo =  String.Empty;            
    185.             //create an instance of the Managemnet class with the
    186.             //Win32_Processor class
    187.             ManagementClass mgmt = new ManagementClass("Win32_Processor");
    188.             //create a ManagementObjectCollection to loop through
    189.             ManagementObjectCollection objCol = mgmt.GetInstances();
    190.             //start our loop for all processors found
    191.             foreach(ManagementObject obj in objCol)
    192.             {
    193.                 if(cpuInfo == String.Empty)
    194.                 {
    195.                     // only return cpuInfo from first CPU
    196.                     cpuInfo = obj.Properties["ProcessorId"].Value.ToString();
    197.                 }            
    198.             }
    199.             return cpuInfo;        
    200.         }
    201.  
    202.         /// <summary>
    203.         /// method for retrieving the CPU Manufacturer
    204.         /// using the WMI class
    205.         /// </summary>
    206.         /// <returns>CPU Manufacturer</returns>
    207.         public string GetCPUManufacturer()
    208.         {
    209.             string cpuMan = String.Empty;
    210.             //create an instance of the Managemnet class with the
    211.             //Win32_Processor class
    212.             ManagementClass mgmt = new ManagementClass("Win32_Processor");
    213.             //create a ManagementObjectCollection to loop through
    214.             ManagementObjectCollection objCol = mgmt.GetInstances();
    215.             //start our loop for all processors found
    216.             foreach (ManagementObject obj in objCol)
    217.             {
    218.                 if (cpuMan == String.Empty)
    219.                 {
    220.                     // only return manufacturer from first CPU
    221.                     cpuMan = obj.Properties["Manufacturer"].Value.ToString();
    222.                 }
    223.             }
    224.             return cpuMan;        
    225.         }
    226.  
    227.         /// <summary>
    228.         /// method for retrieving the CPU status
    229.         /// using the WMI class
    230.         /// </summary>
    231.         /// <returns>the CPU status</returns>
    232.         public string GetCPUStatus()
    233.         {
    234.             string cpuStatus = String.Empty;
    235.             //create an instance of the Managemnet class with the
    236.             //Win32_Processor class
    237.             ManagementClass mgmt = new ManagementClass("Win32_Processor");
    238.             //create a ManagementObjectCollection to loop through
    239.             ManagementObjectCollection objCol = mgmt.GetInstances();
    240.             //start our loop for all processors found
    241.             foreach (ManagementObject obj in objCol)
    242.             {
    243.                 if (cpuStatus == String.Empty)
    244.                 {
    245.                     // only return cpuStatus from first CPU
    246.                     cpuStatus = obj.Properties["Status"].Value.ToString();
    247.                 }
    248.             }
    249.             //return the status
    250.             return cpuStatus;    
    251.         }
    252.  
    253.         /// <summary>
    254.         /// method to retrieve the CPU's current
    255.         /// clock speed using the WMI class
    256.         /// </summary>
    257.         /// <returns>Clock speed</returns>
    258.         public int GetCPUCurrentClockSpeed()
    259.         {
    260.             int cpuClockSpeed = 0;
    261.             //create an instance of the Managemnet class with the
    262.             //Win32_Processor class
    263.             ManagementClass mgmt = new ManagementClass("Win32_Processor");
    264.             //create a ManagementObjectCollection to loop through
    265.             ManagementObjectCollection objCol = mgmt.GetInstances();
    266.             //start our loop for all processors found
    267.             foreach (ManagementObject obj in objCol)
    268.             {
    269.                 if (cpuClockSpeed == 0)
    270.                 {
    271.                     // only return cpuStatus from first CPU
    272.                     cpuClockSpeed = Convert.ToInt32(obj.Properties["CurrentClockSpeed"].Value.ToString());
    273.                 }
    274.             }
    275.             //return the status
    276.             return cpuClockSpeed;    
    277.         }
    278.     }
    279. }
    Cánh Chym ứ mỏi

  4. #4
    Ngày gia nhập
    06 2007
    Bài viết
    179

    Mã ổ cứng như kiểu là Serial ấy, mỗi một cái ổ cứng chỉ có một mã thôi. Bài viết của bác Mod chi tiết quá nhưng mà chưa kip đọc Thanks cái đã
    Mà bác Mod ơi cho em hỏi thêm một chút cái GetCPUId ấy nó là cái gì thế, đọc mã của chip à, hay là công dụng gì vậy ta
    Đã được chỉnh sửa lần cuối bởi mouseover : 07-05-2009 lúc 09:44 PM.

  5. #5
    Ngày gia nhập
    06 2007
    Bài viết
    179

    Oái nó báo thế này. Do đâu vậy bộ cài hay là cái gì vậy các bác ?

    The type or namespace name 'Management' does not exist in the namespace 'System' (are you missing an assembly reference?)

    Giờ mà khắc phục thì làm thế nào đây, có phải là do bản .net ko, hay thử up lên 3,5 sp1 nhỉ xem sao đã
    Đã được chỉnh sửa lần cuối bởi mouseover : 07-05-2009 lúc 10:01 PM.

  6. #6
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định Lấy mã ổ cứng bằng C#

    Add Reference => system.management.dll

    không thì lấy serial của HDD qua API

    Visual C# Code:
    1. [DllImport("kernel32.dll")]
    2. private static extern long GetVolumeInformation(string PathName, StringBuilder VolumeNameBuffer, UInt32 VolumeNameSize, ref UInt32 VolumeSerialNumber, ref UInt32 MaximumComponentLength, ref UInt32 FileSystemFlags, StringBuilder FileSystemNameBuffer, UInt32 FileSystemNameSize);
    3.  
    4. public string GetVolumeSerial(string strDriveLetter)
    5. {
    6. uint serNum = 0;
    7. uint maxCompLen = 0;
    8. StringBuilder VolLabel = new StringBuilder(256); // Label
    9. UInt32 VolFlags = new UInt32();
    10. StringBuilder FSName = new StringBuilder(256); // File System Name
    11. strDriveLetter+=":\\"; // fix up the passed-in drive letter for the API call
    12. long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity);
    13.  
    14. return Convert.ToString(serNum);
    15. }
    None!

  7. #7
    Ngày gia nhập
    06 2007
    Bài viết
    179

    hic siêu quá. Khen một câu mà cũng ko được khen ngắn hic hic

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn