try something likeusing System.Runtime.InteropServices;[DllImport("kernel32.dll")]
  private static extern long GetVolumeInformation(string rootPathName,
   StringBuilder volumeNameBuffer,
   long volumeNameSize,
   long volumneSerialNumber,
   long maximumComponentLength,
   long fileSystemFlags,
   StringBuilder fileSystemNameBuffer,
   long fileSystemNameSize);// Get the volume name
    StringBuilder buff = new StringBuilder(255);
    long size=0;
    StringBuilder fileBuf = new StringBuilder(255);    int retVal = GetVolumeInformation("c:\", buff, 255,  size, 0, 0,
fileBuf, 255);

解决方案 »

  1.   

    saucer多谢你的回答, 再问一下:.在我电脑上运行未通过.因为不知道StringBuilder是什么类型的东东,因为在帮助中也没有说明,但好象的确需要这到一个东东,是不是我还需要引using点什么的?多谢!
      

  2.   

    还需:using System.Text ;
    private void button1_Click(object sender, System.EventArgs e)
    {
    // Get the volume name
    StringBuilder buff = new StringBuilder(255);
    long size=0;
    StringBuilder fileBuf = new StringBuilder(255);
    long retVal = GetVolumeInformation ("D:\\", buff, 255,  size, 0, 0,fileBuf, 255);
    MessageBox.Show (retVal.ToString ());
    }
    但为什么连续两次Click,第一按Click的值会和第二次按下这Click的值不同呢?
      

  3.   

    在VB中得到的值是唯一而肯定的。但为在C#中连续两次Click,第一按Click的值会和第二次按下这Click的值不同呢?是不是那个参数用得不对了,有那位高手可以说说的吗?如果取不到硬盘唯一的ID号,那又有什么意思呢??
    兄弟们帮帮俺呀!!!!!
      

  4.   

    [DllImportAttribute ("user32.dll")] 
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
      

  5.   

    tryStringBuilder buff = new StringBuilder(1024);
    long size=0;
    StringBuilder fileBuf = new StringBuilder(1024);
    long retVal = GetVolumeInformation ("D:\\", buff, 1024,  size, 0, 0,fileBuf, 1024);
    MessageBox.Show (retVal.ToString ());