任何快速的方法来获得卷序列号? [英] Any faster method to get Volume Serial number?
本文介绍了任何快速的方法来获得卷序列号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是用这个code,以生成机器签名。但是,这需要显着的时间来执行。不知道为什么就这么慢?任何快速的方法建议?
公共共享功能DriveSN(BYVAL驱动器号作为字符串)作为字符串
昏暗的磁盘的ManagementObject =新的ManagementObject(的String.Format(的Win32_LogicalDisk ='{0}',驱动器号))
昏暗卷名作为字符串= disk.Properties(卷名)。Value.ToString()
昏暗的SerialNumber作为字符串= disk.Properties(VolumeSerialnumber)。Value.ToString()
返回SerialNumber.Insert(4, - )
端功能
私人共享MSIG作为字符串=无
公共共享功能MachineSignature()作为字符串
如果MSIG是没有那么
昏暗的列表作为新的列表(串)
对于每个D作为DriveInfo在DriveInfo.GetDrives()
如果(d.IsReady)然后
list.Add(DriveSN(d.Name.Substring(0,2)))
结束如果
下一个
MSIG =的string.join(与&,list.ToArray())
结束如果
返回MSIG
端功能
解决方案
这是令人尴尬的。性能问题可以通过简单地加以解决检查固定的驱动器。
公共共享功能MachineSignature()作为字符串
如果MSIG是没有那么
昏暗的列表作为新的列表(串)
对于每个D作为DriveInfo在DriveInfo.GetDrives()
如果(d.DriveType = DriveType.Fixed)AndAlso(d.IsReady)然后'< - 检查的DriveType'
list.Add(DriveSN(d.Name.Substring(0,2)))
结束如果
下一个
MSIG =的string.join(与&,list.ToArray())
结束如果
返回MSIG
端功能
Hi I'm using this code to generate machine signature. But it's take noticeable time to execute. Wonder why it's that slow ? Any faster method recommended ?
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
解决方案
This is embarrassing. The performance problem can be solved by simply check for "fixed" drive.
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.DriveType = DriveType.Fixed) AndAlso (d.IsReady) Then ' <-- check for DriveType'
list.Add(DriveSN(d.Name.Substring(0, 2)))
End If
Next
msig = String.Join(" & ", list.ToArray())
End If
Return msig
End Function
这篇关于任何快速的方法来获得卷序列号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文