......

解决方案 »

  1.   

    一般都这种解决方法:
    顺便奉送得到硬盘信息方法:(VB)
    Imports System.Management
    Public Class Form1
        Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code "  Public Sub New()
        MyBase.New()
        InitializeComponent()
      End Sub  Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
          If Not (components Is Nothing) Then
            components.Dispose()
          End If
        End If
        MyBase.Dispose(disposing)
      End Sub
      Private components As System.ComponentModel.IContainer
      Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
      <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.ListBox1 = New System.Windows.Forms.ListBox
        Me.SuspendLayout()
        '
        'ListBox1
        '
        Me.ListBox1.Location = New System.Drawing.Point(8, 8)
        Me.ListBox1.Name = "ListBox1"
        Me.ListBox1.Size = New System.Drawing.Size(272, 212)
        Me.ListBox1.TabIndex = 0
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(292, 238)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.ListBox1})
        Me.Name = "Form1"
        Me.Text = "Form1"
        Me.ResumeLayout(False)  End Sub#End Region  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    On Error Resume Next
        Dim HDDDeviceQuery As New SelectQuery("Win32_DiskDrive")
        Dim HDDDeviceSearch As New ManagementObjectSearcher(HDDDeviceQuery)
        Dim HDDDeviceInfo As ManagementObject
        For Each HDDDeviceInfo In HDDDeviceSearch.Get()
          ListBox1.Items.Add("HDD Description: " & HDDDeviceInfo("caption").ToString())
          ListBox1.Items.Add("HDD BytesPerSector: " & HDDDeviceInfo("BytesPerSector").ToString())
          ListBox1.Items.Add("HDD CompressionMethod: " & HDDDeviceInfo("CompressionMethod").ToString())
          ListBox1.Items.Add("HDD Index: " & HDDDeviceInfo("Index").ToString())
          ListBox1.Items.Add("HDD InstallDate: " & HDDDeviceInfo("InstallDate").ToString())
          ListBox1.Items.Add("HDD Manufacturer: " & HDDDeviceInfo("Manufacturer").ToString())
          ListBox1.Items.Add("HDD Partitions: " & HDDDeviceInfo("Partitions").ToString())
          ListBox1.Items.Add("HDD Size: " & Int(Val(HDDDeviceInfo("Size").ToString()) / 2 ^ 30) & "  GBytes")
          ListBox1.Items.Add("HDD TotalCylinders: " & HDDDeviceInfo("TotalCylinders").ToString())
          ListBox1.Items.Add("HDD TotalSectors: " & HDDDeviceInfo("TotalSectors").ToString())
          ListBox1.Items.Add("HDD TracksPerCylinder: " & HDDDeviceInfo("TracksPerCylinder").ToString())
          ListBox1.Items.Add("HDD TotalHeads: " & HDDDeviceInfo("TotalHeads").ToString())
          ListBox1.Items.Add("HDD TotalTracks: " & HDDDeviceInfo("TotalTracks").ToString())
          ListBox1.Items.Add("HDD SectorsPerTrack: " & HDDDeviceInfo("SectorsPerTrack").ToString())
          ListBox1.Items.Add("HDD SCSILogicalUnit: " & HDDDeviceInfo("SCSILogicalUnit").ToString())
        Next
      End Sub
    End Class
      

  2.   

    http://blog.csdn.net/iwebsms/archive/2004/10/06/126397.aspx
      

  3.   

    当然是唯一的:using System;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Text;
    using Microsoft.Win32;namespace Wjb.ReadOrWriteIniAndReg
    {
    /// <summary>
    /// HardDiskVal 的摘要说明。
    /// 读取指定盘符的硬盘序列号
    /// 功能:读取指定盘符的硬盘序列号
    /// </summary>
    public class HardDiskVal
    {
    [DllImport("kernel32.dll")]
    private static extern int GetVolumeInformation(
    string lpRootPathName,
    string lpVolumeNameBuffer,
    int nVolumeNameSize,
    ref int lpVolumeSerialNumber,
    int lpMaximumComponentLength,
    int lpFileSystemFlags,
    string lpFileSystemNameBuffer,
    int nFileSystemNameSize
    );
    /// <summary>
    /// 获得盘符为drvID的硬盘序列号,缺省为C
    /// </summary>
    /// <param name="drvID"></param>
    /// <returns></returns>
    public string HDVal(string drvID)
    {
    const int MAX_FILENAME_LEN = 256;
    int retVal = 0;
    int a =0;
    int b =0;
    string str1 = null;
    string str2 = null;
    int i = GetVolumeInformation(
    drvID + @":\",
    str1,
    MAX_FILENAME_LEN,
    ref retVal,
    a,
    b,
    str2,
    MAX_FILENAME_LEN
    );
    return retVal.ToString();
    }
    public string HDVal()
    {
    const int MAX_FILENAME_LEN = 256;
    int retVal = 0;
    int a =0;
    int b =0;
    string str1 = null;
    string str2 = null;
    int i = GetVolumeInformation(
    "c:\\",
    str1,
    MAX_FILENAME_LEN,
    ref retVal,
    a,
    b,
    str2,
    MAX_FILENAME_LEN
    );
    return retVal.ToString();
    }

    }