こんにちは私はマシンの署名を生成するためにこのコードを使用しています。しかし、実行にはかなりの時間がかかります。なぜそんなに遅いのだろうか?より高速な方法をお勧めしますか?ボリュームのシリアル番号を取得する方法は簡単ですか?
Public Shared Function DriveSN(ByVal DriveLetter As String) As String
Dim disk As ManagementObject = New ManagementObject(String.Format("Win32_Logicaldisk='{0}'", DriveLetter))
Dim VolumeName As String = disk.Properties("VolumeName").Value.ToString()
Dim SerialNumber As String = disk.Properties("VolumeSerialnumber").Value.ToString()
Return SerialNumber.Insert(4, "-")
End Function
Private Shared msig As String = Nothing
Public Shared Function MachineSignature() As String
If msig Is Nothing Then
Dim list As New List(Of String)
For Each d As DriveInfo In DriveInfo.GetDrives()
If (d.IsReady) Then
list.Add(DriveSN(d.Name.Substring(0, 2)))
End If
Next
msig = String.Join(" & ", list.ToArray())
End If
Return msig
End Function
あなたはそれがどのように問題であることを発見しましたか? –
デバッガを介してステップ実行します。他の種類のドライブ(フロッピー、CD-ROM)をチェックする "IsReady"は目立つポーズをとらえることができます。 ここには何も秘密がありません。 – Sake