Visual studio 2010 GetDriveSerialNumber()在使用visual basic 2010的特定计算机上无法正常工作?
我正在使用GetDriveSerialNumber()检索visual basic 2010中的驱动器卷序列号 我有以下进口产品:Visual studio 2010 GetDriveSerialNumber()在使用visual basic 2010的特定计算机上无法正常工作?,visual-studio-2010,Visual Studio 2010,我正在使用GetDriveSerialNumber()检索visual basic 2010中的驱动器卷序列号 我有以下进口产品: Imports System Imports System.IO Imports System.Text Imports System.Net.NetworkInformation Imports System.Management Imports System.Collections Imports Microsoft.Win32 Imports Microsof
Imports System
Imports System.IO
Imports System.Text
Imports System.Net.NetworkInformation
Imports System.Management
Imports System.Collections
Imports Microsoft.Win32
Imports Microsoft.VisualBasic
然后在模块中:
Dim path As String
'Get HD volume Serial Number from Function
Dim DriveVID As String = GetDriveSerialNumber()
功能是:
'Get HD Volume serial Number
Public Function GetDriveSerialNumber() As String
Dim DriveSerial As Long
Dim fso As Object, Drv As Object
'Create a FileSystemObject object
fso = CreateObject("Scripting.FileSystemObject")
Drv = fso.GetDrive(fso.GetDriveName(AppDomain.CurrentDomain.BaseDirectory))
With Drv
If .IsReady Then
DriveSerial = .SerialNumber
Else '"Drive Not Ready!"
DriveSerial = -1
End If
End With
'Clean up
Drv = Nothing
fso = Nothing
GetDriveSerialNumber = Hex(DriveSerial)
End Function
这对10台计算机中的9台非常有效
只有一个给了我不同的7个字符
反对它应该给我的8个字
即使我在cmd中键入vol命令
在那台电脑上
它给了我正确的8个字符的卷序列号
有人知道出了什么问题吗?此功能似乎适用于我所有的测试计算机:
Private Function GetDriveSerialNumber(ByVal drive As String) As String
Dim driveSerial As String = String.Empty
Dim driveFixed As String = Path.GetPathRoot(drive)
driveFixed = Replace(driveFixed, "\", String.Empty)
Using querySearch As New ManagementObjectSearcher("SELECT VolumeSerialNumber FROM Win32_LogicalDisk Where Name = '" & driveFixed & "'")
Using queryCollection As ManagementObjectCollection = querySearch.Get()
Dim moItem As ManagementObject
For Each moItem In queryCollection
driveSerial = CStr(moItem.Item("VolumeSerialNumber"))
Exit For
Next
End Using
End Using
Return driveSerial
End Function
唯一的问题是你必须给函数发送一个驱动器号,
这对我来说不是问题,是如何定义GetDriveSerialNumber()的?该信息也是必需的。:)对不起,我忘了添加函数,我刚刚添加了。