我带着ILSpy(http://ilspy.net/)一看就System.IO.DriveInfo类,我想通了 这个代码,似乎很好地工作:
'------------------------------------------------------
' Declaration found in Microsoft.Win32.Win32Native
'------------------------------------------------------
Friend Declare Auto Function GetVolumeInformation Lib "kernel32.dll" (drive As String, <Out()> volumeName As StringBuilder, volumeNameBufLen As Integer, <Out()> ByRef volSerialNumber As Integer, <Out()> ByRef maxFileNameLen As Integer, <Out()> ByRef fileSystemFlags As Integer, <Out()> fileSystemName As StringBuilder, fileSystemNameBufLen As Integer) As Boolean
'------------------------------------------------------
' Test in my Form class
'------------------------------------------------------
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
Try
Dim volumeName As StringBuilder = New StringBuilder(50)
Dim stringBuilder As StringBuilder = New StringBuilder(50)
Dim volSerialNumber As Integer
Dim maxFileNameLen As Integer
Dim fileSystemFlags As Integer
If Not GetVolumeInformation("C:\", volumeName, 50, volSerialNumber, maxFileNameLen, fileSystemFlags, stringBuilder, 50) Then
Dim lastWin32Error As Integer = Marshal.GetLastWin32Error()
MsgBox("Error number:" & lastWin32Error)
Else
MsgBox(volSerialNumber.ToString("X"))
End If
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
我不明白。您已经提供了答案的链接。这是你非常喜欢的截图底部的文章。什么是关于C++的“无聊”? – 2011-04-15 11:32:35
更重要的是,为什么这么多人需要找出我的硬盘的序列号?这个问题被问了很多(你已经发现至少有3个重复项),考虑到*绝对没有有效的用例*。卷序列号是你可能*关心的唯一的东西;这是唯一重要的事情。 – 2011-04-15 11:33:36
因为我尝试但不能在C#中实现它.....我和我使用硬盘序列号为我们的应用程序,它只能在客户端PC上运行,如果它发现我们的可执行数据库中的客户端PC的硬盘序列号应用程序.....在短,它匹配数据库中的硬盘序列号1和从客户端PC获得运行时.........如果发现比我们的应用程序运行......... – Pritesh 2011-04-15 11:42:36