询问者
c# 区分本地硬盘,移动硬盘,U盘

常规讨论
全部回复
-
您好,
移动硬盘不是flash drive,所以顯示出來的是Fixed哦!
以下也有很多人跟您一樣的困擾!
[C# Net 3.5] DriveInfo class
以上說明若有錯誤請指教,謝謝。
亂馬客blog: http://www.dotblogs.com.tw/rainmaker/- 已编辑 亂馬客 2012年4月10日 4:52
-
用API函数GetDriveType可以区分盘符是U盘的盘符还是移动硬盘的盘符,具体如下
GetDriveType("X://") == DRIVE_REMOVABLE 即U盘的盘符
GetDriveType("X://") == DRIVE_FIXED 即移动硬盘和本地硬盘的盘符
但网上有很多人都问过如何区分U盘和移动硬盘的盘符。可从上面看,区分这两者是很容易,起码是在XP的环境里。不过如果要区分移动硬盘和本地硬盘就是一个
大问题了,因为本地硬盘和移动硬盘的GetDriveType函数得到都是DRIVE_FIXED,所以区分这两者可能要从其他途径入手 -
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 就是 本地硬盘
- 已编辑 Steven.桦仔 2012年4月14日 8:45
-
更正一下昨天的代码:
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 下运行无误:
-