正好我前两天写过一段类似代码,你可以参考参考:
procedure EnumLogicalDrivers(DriveList: TStrings);
var dwDrivers, I, Mask: DWord;
begin
  if not Assigned(DriveList) then 
    Exit
  else
    DriveList.Clear;  // 结果存到DriveList里。
  dwDrivers:=GetLogicalDrives; // 调用这个API是关键。
  for I:=0 to SizeOf(DWord) - 1 do
  begin
    Mask:=$00000001;
    Mask:=Mask shl I;
    if dwDrivers and Mask = Mask then
      DriveList.Add(Chr(Ord('A') + I) + ':');
  end;
end;

解决方案 »

  1.   

    同上意见,不过用一些控件(如ShellTreeView之类)也可得到类似结果。
      

  2.   

    westfly(西翔) 所写的代码只是读取系统所有盘符,并非读取硬盘盘符,只要在稍微修改一下就行了
    if dwDrivers and Mask = Mask then 
    begin
    ///////////////
      if GetDriveType(Chr(Ord('A')+i)+':\') = DRIVE_FIXED then
    ///////////////
    DriveList.Add(Chr(Ord('A') + I) + ':'); 
    end ;
    end; 
      

  3.   

    同意Liujc(阿聪)的说法,系统盘符还有
    DRIVE_REMOVABLE、DRIVE_CDROM等,可以参看msdn有关帮助