none
c# 区分本地硬盘,移动硬盘,U盘 RRS feed

  • 常规讨论

  • 使用DriveInfo.GetDrives();获得所有驱动盘信息后通过DriveType来区分,但是移动硬盘和本地硬盘的DriveType都是fixed,不知道该怎么区分移动硬盘,谢谢!

    guiwenyang

    2012年4月10日 2:06

全部回复

  • 您好,

    移动硬盘不是flash drive,所以顯示出來的是Fixed哦!

    DriveType Enumeration

    以下也有很多人跟您一樣的困擾!
    [C# Net 3.5] DriveInfo class

     


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2012年4月10日 4:51
  • 你可以尝试使用下WMI去获取usb口上的硬盘分区,然后判断一下应该就没什么问题了

    分享与互助~~小站:http://www.cnblogs.com/knightluffy/

    2012年4月12日 1:17
  • 用API函数GetDriveType可以区分盘符是U盘的盘符还是移动硬盘的盘符,具体如下
    GetDriveType("X://") == DRIVE_REMOVABLE 即U盘的盘符
    GetDriveType("X://") == DRIVE_FIXED 即移动硬盘和本地硬盘的盘符

    但网上有很多人都问过如何区分U盘和移动硬盘的盘符。可从上面看,区分这两者是很容易,起码是在XP的环境里。不过如果要区分移动硬盘和本地硬盘就是一个
    大问题了,因为本地硬盘和移动硬盘的GetDriveType函数得到都是DRIVE_FIXED,所以区分这两者可能要从其他途径入手
    2012年4月13日 15:32
  •   Dim fso As FileSystemObject
      Dim Dr   As Drive
      Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
        
      Private Sub Command1_Click()
            Dim fso     As New FileSystemObject
            For Each Dr In fso.Drives
                If GetDriveType(Dr) = 2 Then
                        Debug.Print Dr.DriveLetter & "盘为usb硬盘"
                End If
                If GetDriveType(Dr) = 3 Then
                        Debug.Print Dr.DriveLetter & "盘为本地硬盘"
                End If
        
            Next
              
      End Sub

    上面的是VB代码,主要看GetDriveType(Dr)的返回值,如果是2那么Dr.DriveLetter (驱动器名) 盘为 USB硬盘 如果是3 就是 本地硬盘

    给我写信: QQ我:点击这里给我发消息


    2012年4月14日 8:39
  • 更正一下昨天的代码:

      
      Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
        
      Private Sub GetDiskType()
            Dim fso
            Set fso = CreateObject("Scripting.Filesystemobject")
    
            For Each Dr In fso.drives
                If GetDriveType(Dr) = 2 Then
                        MsgBox Dr.DriveLetter & "盘为usb硬盘", vbOKOnly, "提示"
                End If
                If GetDriveType(Dr) = 3 Then
                   MsgBox Dr.DriveLetter & "盘为本地硬盘", vbOKOnly, "提示"
                        
                End If
        
            Next
              
      End Sub
    

    在 excel VBA 下运行无误:


    给我写信: QQ我:点击这里给我发消息

    2012年4月15日 1:56
  • LZ请看一下我这个自己做的C# 小程序是否符合你要求?

    下载地址:http://www.kuaipan.com.cn/file/id_4401224786915697.htm


    给我写信: QQ我:点击这里给我发消息

    2012年4月18日 15:16
  • 不对,谢谢!

    guiwenyang

    2012年4月26日 1:57
  • 我试验的结果还是区分不出移动硬盘,谢谢!

    guiwenyang

    2012年4月26日 2:00