vb.net:VolumeSerialNumber与vb6 GetVolumeInformation

时间:2012-12-17 09:11:24

标签: vb.net

在VB6中,我得到的卷的序列号如下:

Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
r = GetVolumeInformation(uDrive, Temp1, StrLen(Temp1), lSerialNumber, 0, 0, Temp2, StrLen(Temp2))

GetPartitionSerialNumber = lSerialNumber

在VB.NET中我使用

    Dim disk As System.Management.ManagementObject = New System.Management.ManagementObject("win32_logicaldisk.deviceid=""" + uDrive + ":""")
    disk.Get()
    Dim SerialNumber As String = disk("VolumeSerialNumber").ToString()

VB6返回-1870518177,但VB.NET返回9082285F。

有人可以告诉我我还需要做些什么才能在.NET中获得结果-1870518177?

谢谢!

2 个答案:

答案 0 :(得分:2)

虽然Val("&H" & ...)可行,但这是旧的VB6做事方式并非最佳。更好的方法是:

Dim iSerial As Integer = Convert.ToInt32(sSerialNumber, 16) 

16参数指定基数(十六进制数为16)。

答案 1 :(得分:0)

Dim iSerial As Integer = Val(“& H”& sSerialNumber)