
正文
vb.netu盘序列号,vb获取硬盘序列号
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
VB如何获取当前U盘的序列号?
For Each啊
你其实已经把所有的U盘都遍历了,CC的内容在循环时被重复修改了N次
找到一个U盘后,去判断U盘的所有盘符,与程序所在盘符相同的就是当前U盘
相关问答
Q1: 【100分求助】vb代码提取U盘硬件序列号,两段代码的区别,及存在的问题,如何解决?
变量是定义WMI对象,上面一种是不指明类型,直接是Object对象方式访问,下面一种是指定类型为WMI对象,以指针方式,两种都可以,上面一种以Object对象的话,不需要在工程菜单中引用WMI的对象库,第二种要运行必须要在工程菜单中WMI对象库
用这个 GetDriveType("盘符"), 如果返回是2,则表明是U盘
取到盘符后可以用
private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
if GetDriveType("c:")=2 then
msgbox "是U盘"
end if
Q2: vb(vb.net)能不能修改计算机中指定驱动器的盘符? 我想在U盘插入时通过序列号识别指定设备并
Sub RenameVolume()
'利用Shell函数在命令提示符下执行Diskpart命令的脚本,并存入日志文件
'达到替换逻辑盘符的目的
'在WindowsXp系统下测试成功
'获取临时文件路径
Temp = Environ("TEMP") "\"
'获取命令提示符路径
Cmd = Environ("ComSpec")
'设置脚本文件和日志文件路径
ScriptFile = Temp "DiskpartScript.txt"
ScriptLog = Temp "DiskpartScript.log"
'回车符和换行符
vbLfCr = vbLf vbCr
'脚本文件内容
'选择卷e
'移除盘符e
'分配盘符m
'退出Diskpart
ScriptTxt = "select volume e" vbLf vbCr _
"Remove letter = e" vbLf vbCr _
"assign letter = m" vbLf vbCr _
"exit" vbLf vbCr
'打开脚本文件并读取内容
Open ScriptFile For Output As #1
Print #1, ScriptTxt
Close #1
'打开错误处理
On Error Resume Next
'删除原有日志文件
Kill ScriptLog
'关闭错误处理
On Error GoTo 0
'执行脚本
ShellTxt = Cmd " /c ""diskpart.exe /S " ScriptFile " " ScriptLog """"
Shell ShellTxt
'打开错误处理
On Error Resume Next
Do
Err.Number = 0
'打开日志文件并读取内容,因日志文件存取速度慢,必须以锁定方式打开,否则会出错
Open ScriptLog For Input Lock Read Write As #1
DoEvents
Loop Until Err.Number = 0
'关闭错误处理
On Error GoTo 0
'日志文件中含有中文字符,必须以InputB函数以字节方式读取,否则长度会超出
LogTxt = InputB(LOF(1), #1)
Close #1
'转换以字节方式读取的日志文件内容
LogTxt = StrConv(LogTxt, vbUnicode)
'如果日志中出现两次成功,则认为执行成功,否则认为失败
If Len(LogTxt) - Len(Replace(LogTxt, "成功", "", 1)) = 4 Then
MsgBox "盘符替换成功!"
Else
MsgBox "盘符替换失败!"
End If
'删除临时文件
Kill ScriptFile
Kill ScriptLog
End Sub
Q3: win7下vb.net 如何获取硬盘序列号
Private Function 硬盘序列号() As String
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 0\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盘序列号 = Trim(myInfo.GetValue("SerialNumber"))
Catch
Try
Dim myInfo As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("HARDWARE\DEVICEMAP\Scsi\Scsi Port 1\Scsi Bus 1\Target Id 0\Logical Unit Id 0")
硬盘序列号 = Trim(myInfo.GetValue("SerialNumber"))
Catch
硬盘序列号 = ""
End Try
End Try
End Function
试下,如果返回为空,则表示失败。
在本机win8win8.1有效,不过好像在有些机器上没用。






