资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

vb.net读取硬盘id,vbnet读取文件内容

win7下vb.net 如何获取硬盘序列号

Private Function 硬盘序列号() As String

创新互联公司主营高唐网站建设的网络公司,主营网站建设方案,重庆APP软件开发,高唐h5重庆小程序开发公司搭建,高唐网站营销推广欢迎高唐等地区企业咨询

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有效,不过好像在有些机器上没用。

vb.net如何获取电脑中的所有盘符

首先使用 System.IO.DriveInfo.GetDrives()获取System.IO.DriveInfo,存入ds()

然后遍历ds,获取各个信息部分。

Dim ds() As System.IO.DriveInfo = System.IO.DriveInfo.GetDrives()

For i As Integer = 0 To ds.Length - 1

TextBox1.Text = TextBox1.Text + ds(i).DriveType.ToString + " " '驱动器类型

TextBox1.Text = TextBox1.Text + ds(i).Name + " " '盘符(驱动器名)

TextBox1.Text = TextBox1.Text + ds(i).IsReady.ToString + " " '是否就绪

If ds(i).IsReady = True Then

TextBox1.Text = TextBox1.Text + ds(i).VolumeLabel + " " '卷标

TextBox1.Text = TextBox1.Text + ds(i).TotalSize.ToString + " " '驱动器容量

TextBox1.Text = TextBox1.Text + ds(i).TotalFreeSpace.ToString '驱动器可用容量

End If

TextBox1.Text = TextBox1.Text + vbNewLine

Next

vb6怎样读取win10下硬盘序列号

vb6读取win10下硬盘序列号方法如下:

1、是指硬盘物理序列号,格式化没有变化。

2、支持vista 及win10系统。

3、支持多块硬盘(有的电脑装有几块硬盘)

4、支持串口及并口硬盘。

5、最好是源码或dll 等,代码如下:

Visual Basic code

'-------------------添加类模块clsMainInfo-------------------------

Option Explicit

Private Const VER_PLATFORM_WIN32S = 0

Private Const VER_PLATFORM_WIN32_WINDOWS = 1

Private Const VER_PLATFORM_WIN32_NT = 2

Private Const DFP_RECEIVE_DRIVE_DATA = H7C088

Private Const FILE_SHARE_READ = H1

Private Const FILE_SHARE_WRITE = H2

Private Const GENERIC_READ = H80000000

Private Const GENERIC_WRITE = H40000000

Private Const OPEN_EXISTING = 3

Private Const Create_NEW = 1

Private Enum HDINFO

HD_MODEL_NUMBER

HD_SERIAL_NUMBER

HD_FIRMWARE_REVISION

End Enum

Private Type OSVERSIONINFO

dwOSVersionInfoSize As Long

dwMajorVersion As Long

dwMinorVersion As Long

dwBuildNumber As Long

dwPlatformId As Long

szCSDVersion As String * 128

End Type

Private Type IDEREGS

bFeaturesReg As Byte

bSectorCountReg As Byte

bSectorNumberReg As Byte

bCylLowReg As Byte

bCylHighReg As Byte

bDriveHeadReg As Byte

bCommandReg As Byte

bReserved As Byte

End Type

Private Type SENDCMDINPARAMS

cBufferSize As Long

irDriveRegs As IDEREGS

bDriveNumber As Byte

bReserved(1 To 3) As Byte

dwReserved(1 To 4) As Long

End Type

Private Type DRIVERSTATUS

bDriveError As Byte

bIDEStatus As Byte

bReserved(1 To 2) As Byte

dwReserved(1 To 2) As Long

End Type

Private Type SENDCMDOUTPARAMS

cBufferSize As Long

DStatus As DRIVERSTATUS

bBuffer(1 To 512) As Byte

End Type

Private Declare Function GetVersionEx _

Lib "kernel32" Alias "GetVersionExA" _

(lpVersionInformation As OSVERSIONINFO) As Long

Private Declare Function CreateFile _

Lib "kernel32" Alias "CreateFileA" _

(ByVal lpFileName As String, _

ByVal dwDesiredAccess As Long, _

ByVal dwShareMode As Long, _

ByVal lpSecurityAttributes As Long, _

ByVal dwCreationDisposition As Long, _

ByVal dwFlagsAndAttributes As Long, _

ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle _

Lib "kernel32" _

(ByVal hObject As Long) As Long

Private Declare Function DeviceIoControl _

Lib "kernel32" _

(ByVal hDevice As Long, _

ByVal dwIoControlCode As Long, _

lpInBuffer As Any, _

ByVal nInBufferSize As Long, _

lpOutBuffer As Any, _

ByVal nOutBufferSize As Long, _

lpBytesReturned As Long, _

ByVal lpOverlapped As Long) As Long

Private Declare Sub ZeroMemory _

Lib "kernel32" Alias "RtlZeroMemory" _

(dest As Any, _

ByVal numBytes As Long)

Private Declare Sub CopyMemory _

Lib "kernel32" Alias "RtlMoveMemory" _

(Destination As Any, _

Source As Any, _

ByVal Length As Long)

Private Declare Function GetLastError _

Lib "kernel32" () As Long

Private mvarCurrentDrive As Byte

Private mvarPlatform As String

Public Function GetModelNumber() As String

GetModelNumber = CmnGetHDData(HD_MODEL_NUMBER)

End Function

Public Function GetSerialNumber() As String

GetSerialNumber = CmnGetHDData(HD_SERIAL_NUMBER)

End Function

Public Function GetFirmwareRevision() As String

GetFirmwareRevision = CmnGetHDData(HD_FIRMWARE_REVISION)

End Function

Public Property Let CurrentDrive(ByVal vData As Byte)

If vData 0 Or vData 3 Then

  Err.Raise 10000, , "Illegal Drive Number"

End If

mvarCurrentDrive = vData

End Property

Public Property Get CurrentDrive() As Byte

CurrentDrive = mvarCurrentDrive

End Property

Public Property Get Platform() As String

Platform = mvarPlatform

End Property

Private Sub Class_Initialize()

Dim OS As OSVERSIONINFO

OS.dwOSVersionInfoSize = Len(OS)

Call GetVersionEx(OS)

mvarPlatform = "Unk"

Select Case OS.dwPlatformId

  Case Is = VER_PLATFORM_WIN32S

      mvarPlatform = "32S"

  Case Is = VER_PLATFORM_WIN32_WINDOWS

      If OS.dwMinorVersion = 0 Then

          mvarPlatform = "W95"

      Else

          mvarPlatform = "W98"

      End If

  Case Is = VER_PLATFORM_WIN32_NT

      mvarPlatform = "WNT"

End Select

End Sub

Private Function CmnGetHDData(hdi As HDINFO) As String

Dim bin As SENDCMDINPARAMS

Dim bout As SENDCMDOUTPARAMS

Dim hdh As Long

Dim br As Long

Dim ix As Long

Dim hddfr As Long

Dim hddln As Long

Dim s As String

Select Case hdi

  Case HD_MODEL_NUMBER

      hddfr = 55

      hddln = 40

  Case HD_SERIAL_NUMBER

      hddfr = 21

      hddln = 20

  Case HD_FIRMWARE_REVISION

      hddfr = 47

      hddln = 8

  Case Else

      Err.Raise 10001, "Illegal HD Data type"

End Select

Select Case mvarPlatform

  Case "WNT"

      hdh = CreateFile("\\.\PhysicalDrive" mvarCurrentDrive, GENERIC_READ + GENERIC_WRITE, FILE_SHARE_READ + FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)

  Case "W95", "W98"

      hdh = CreateFile("\\.\Smartvsd", 0, 0, 0, Create_NEW, 0, 0)

  Case Else

      Err.Raise 10002, , "Illegal platform (only WNT, W98 or W95)"

End Select

If hdh = 0 Then

  Err.Raise 10003, , "Error on CreateFile"

End If

ZeroMemory bin, Len(bin)

ZeroMemory bout, Len(bout)

With bin

  .bDriveNumber = mvarCurrentDrive

  .cBufferSize = 512

  With .irDriveRegs

      If (mvarCurrentDrive And 1) Then

          .bDriveHeadReg = HB0

      Else

          .bDriveHeadReg = HA0

      End If

      .bCommandReg = HEC

      .bSectorCountReg = 1

      .bSectorNumberReg = 1

  End With

End With

DeviceIoControl hdh, DFP_RECEIVE_DRIVE_DATA, bin, Len(bin), bout, Len(bout), br, 0

s = vbNullString

For ix = hddfr To hddfr + hddln - 1 Step 2

  If bout.bBuffer(ix + 1) = 0 Then Exit For

  s = s Chr(bout.bBuffer(ix + 1))

  If bout.bBuffer(ix) = 0 Then Exit For

  s = s Chr(bout.bBuffer(ix))

Next ix

CloseHandle hdh

CmnGetHDData = Trim(s)

End Function

Visual Basic code

Option Explicit

'纯vb的获取硬盘序列号代码 (摘自枕善居)

'窗体放置1个ComBox,命名为cbDrive,1个ListBox,命名为lstMain,一个CommandButton,命名为cmdGo,添加如下代码

Dim h As clsMainInfo

Private Sub cmdGo_Click()

Dim hT As Long

Dim uW() As Byte

Dim dW() As Byte

Dim pW() As Byte

Set h = New clsMainInfo

With h

  .CurrentDrive = Val(cbDrive.Text)

   lstMain.Clear

   lstMain.AddItem "当前驱动器: " .CurrentDrive

   lstMain.AddItem ""

   lstMain.AddItem "硬盘型号: " .GetModelNumber

   lstMain.AddItem "序列号: " .GetSerialNumber

   lstMain.AddItem "固件版本: " .GetFirmwareRevision

End With

Set h = Nothing

End Sub

Private Sub Form_Load()

cbDrive.AddItem 0

cbDrive.AddItem 1

cbDrive.AddItem 2

cbDrive.AddItem 3

cbDrive.ListIndex = 0

End Sub

VB.NET获取硬盘信息的几种方法

strResult += 磁盘类型: System.Convert.ToInt16(disk(DriveType).ToString())End IfMsgBox(strResult)NextEnd Sub总结:在VB.NET中,用API函数可以获取硬盘信息。原来熟悉API函数VB6程序员,可以对API函数声明进行适当的更改后,进行调用。利用FSO(文件系统对象)的Scrrun.DLL,也可以获得磁盘信息。在.net Framwork中,利用WMI可以获取更多的关于机器硬件的详细信息(参考System.Management命名空间)。

VB6中如何获取磁盘信息?

楼上的朋友可能有点小小的误会楼主的意思了,

楼主朋友可能要现在已经分好区的空间大小,已用空间、剩余空间。

当然我也不敢保证谁对谁错,

我还是把我的理解 然后 也把代码贴出来让楼主看看吧

下面代码的功能:显示光驱当前分区,以及各个盘的总空间,剩余空间。

当然。如果要硬盘总空间,我们可以把所有空间加起来,就达到要求了。

希望下面的代码对楼主有用!

'硬盘空间大小 以及光驱

'添加Drive1 Label1 Label2

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Const DRIVE_CDROM = 5

Public drivenm As String, cddrive As String

Private Sub Form_Load()

'查找CD-ROM的驱动器号

cddrive = ""

For i = 65 To 90

If GetDriveType(Chr$(i) ":\") = DRIVE_CDROM Then

cddrive = UCase(Chr$(i)) ":\"

Exit For

End If

Next i

drivenm = "c:"

Label1.AutoSize = True

Label2.AutoSize = True

Drive1.Left = (Me.Width - Drive1.Width) \ 2

Drive1.Drive = "c"

Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2

gethd

End Sub

Private Sub Form_Activate()

MsgBox "你的光驱在:" cddrive

End Sub

Private Sub Drive1_Change()

drivenm = Mid(Drive1.Drive, 1, 3)

gethd

End Sub

Private Sub gethd() '得知硬盘容量

On Error Resume Next

Dim dfs, cl1, cl2, sec1, byt1, tspace, getdiskvolm, lSize, kk%

Dim hdtype$, hdspace$, hdfspace$

dfs = GetDiskFreeSpace(drivenm, sec1, byt1, cl1, cl2)

If dfs Then

cl2 = Int(cl2 * sec1 / 1024 * byt1)

lSize = Len(Format$(cl2, "#########"))

If lSize 11 Then

kk = 11 - lSize

End If

hdspace = Space(kk) + Format$(cl2, "#########") + " KBytes"

cl1 = Int(cl1 * sec1 / 1024 * byt1)

lSize = Len(Format$(cl1, "#########"))

If lSize 11 Then

kk = 11 - lSize

End If

hdfspace = Space(kk) + Format$(cl1, "#########") + " KBytes"

Else

hdspace = ""

hdfspace = ""

End If

Label1.Caption = "你的" drivenm "盘的总空间是:" Format(Str(Val(hdspace) / 1024 / 1024), "##0.0") + " G"

Label2.Caption = "你的" drivenm "盘剩余空间是:" Format(Str(Val(hdfspace) / 1024), "###,##0.0") + " M"

If UCase(Left(Drive1.Drive, 2)) = UCase(Left(cddrive, 2)) Then

If Val(Label1.Caption) = 0 And Val(Label2.Caption) = 0 Then

MsgBox "这张盘是空的光盘"

Else

If Val(Label1.Caption) 0 And Val(Label2.Caption) 0 Then

MsgBox "这张盘不是空的光盘,但还有空间"

Else

If Val(Label1.Caption) 0 And Val(Label2.Caption) = 0 Then

MsgBox "这张盘是写满并终止的光盘"

End If

End If

End If

End If

End Sub


当前标题:vb.net读取硬盘id,vbnet读取文件内容
浏览路径:http://www.cdkjz.cn/article/dssdsji.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220