1

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を取得するために何をする必要があるか教えてもらえますか?

ありがとうございました!

4

2 に答える 2

2

動作しVal("&H" & ...)ますが、これは最適ではないことを行うための古いVB6の方法です。それを行うためのより良い方法は次のとおりです。

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

パラメーターは基数を指定します(1616進数は基数16です)。

于 2012-12-17T11:00:10.130 に答える
0

Dim iSerial As Integer = Val( "&H"&sSerialNumber)

于 2012-12-17T10:03:21.253 に答える