`
lovnet
  • 浏览: 6882588 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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

阅读更多

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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

1、用API函数GetDiskFreeSpaceEx获取磁盘空间

Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" _

(ByVal lpDirectoryName As String, ByRef lpFreeBytesAvailableToCaller As Long, _

ByRef lpTotalNumberOfBytes As Long, ByRef lpTotalNumberOfFreeBytes As Long) As Long

Private Sub btnDisk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisk.Click

Dim BytesFreeToCalller As Long, TotalBytes As Long

Dim TotalFreeBytes As Long, TotalBytesUsed As Long

Dim strResult As String

Const RootPathName = "C:\"

Call GetDiskFreeSpaceEx(RootPathName, BytesFreeToCalller, TotalBytes, TotalFreeBytes)

strResult = " Drive " & "C:\" & vbCrLf

strResult += "磁盘容量(MB):" & Format(CDbl((TotalBytes / 1024) / 1024), "###,###,##0.00") & vbCrLf

strResult += "可用空间(MB):" & Format(CDbl((TotalFreeBytes / 1024) / 1024), "###,###,##0.00") & vbCrLf

strResult += "已用空间(MB):" & Format(CDbl(((TotalBytes - TotalFreeBytes) / 1024) / 1024), "###,###,##0.00") & vbCrLf

MsgBox(strResult)

End Sub

2、用FSO(文件系统对象模型)实现

FSO对象模型包含在SCRIPTING类型库(SCRRUN.DLL)中。调用方法如下:

在项目菜单中选择引用,在COM中选择Microsoft Scripting Runtime

在代码最顶端添加Imports Scripting,在按钮的单击事件中加入以下代码:

Imports Scripting

Private Sub btnFso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFso.Click

Dim Fso As New FileSystemObject

Dim drvDisk As Drive, strResult As String

drvDisk = Fso.GetDrive("C:\")

strResult = "Drive " & "C:\" & vbCrLf

strResult += "磁盘卷标:" & drvDisk.VolumeName & vbCrLf

strResult += "磁盘序列号:" & drvDisk.SerialNumber & vbCrLf

strResult += "磁盘类型:" & drvDisk.DriveType & vbCrLf

strResult += "文件系统:" & drvDisk.FileSystem & vbCrLf

strResult += "磁盘容量(G): " & FormatNumber(((drvDisk.TotalSize / 1024) / 1024) / 1024, 2, , , Microsoft.VisualBasic.TriState.True) & vbCrLf

strResult += "可用空间(G): " & FormatNumber(((drvDisk.FreeSpace / 1024) / 1024) / 1024, 2, , , Microsoft.VisualBasic.TriState.True) & vbCrLf

strResult += "已用空间(G):" & FormatNumber(((((drvDisk.TotalSize - drvDisk.FreeSpace) / 1024) / 1024) / 1024), 2, , , Microsoft.VisualBasic.TriState.True)

MsgBox(strResult)

End Sub

3、用API函数GetVolumeInformation获取逻辑盘序列号

Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" _

(ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal _

nVolumeNameSize As Integer, ByRef lpVolumeSerialNumber As Long, _

ByVal lpMaximumComponentLength As Integer, ByVal lpFileSystemFlags As Integer, ByVal _

lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Integer) As Integer

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim SerialNumber As Long

Dim TempStr1 As New String(Chr(0), 255)

Dim TempStr2 As New String(Chr(0), 255)

Dim TempInt1, TempInt2 As Integer

GetVolumeInformation("C:\", TempStr1, 256, SerialNumber, TempInt1, TempInt2, TempStr2, 256)

MsgBox("C盘序列号:" & SerialNumber)

End Sub

4、利用WMI获取硬盘信息

Windows Management Instrumentation (WMI) 是可伸缩的系统管理结构,它采用一个统一的、基于标准的、可扩展的面向对象接口。WMI 为您提供与系统管理信息和基础 WMI API 交互的标准方法。WMI 主要由系统管理应用程序开发人员和管理员用来访问和操作系统管理信息。

我们需要使用.net Framwork里面System.Management命名空间下提供的类来实现。

Imports System.Management

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim disk As ManagementBaseObject

Dim strResult As String

Dim diskClass = New ManagementClass("Win32_LogicalDisk")

Dim disks As ManagementObjectCollection

disks = diskClass.GetInstances()

For Each disk In disks

strResult = ""

strResult += "设备ID:" & disk("DeviceID") & vbCrLf

strResult += "磁盘名称:" & disk("Name") & vbCrLf

strResult += "磁盘卷标:" & disk("VolumeName") & vbCrLf

If disk("FileSystem") <> "" Then strResult += "文件系统:" & disk("FileSystem") & vbCrLf

strResult += "磁盘描述:" & disk("Description") & vbCrLf

If System.Convert.ToInt64(disk("Size")) > 0 Then

strResult += "磁盘大小:" & System.Convert.ToInt64(disk("Size").ToString()) & vbCrLf

strResult += "磁盘类型:" & System.Convert.ToInt16(disk("DriveType").ToString())

End If

MsgBox(strResult)

Next

End Sub

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

声明:本文版权与解释权归李洪根所有,如需转载,请保留完整的内容及此声明。

QQ: 21177563

MSN: lihonggen@hotmail.com

专栏:http://www.csdn.net/develop/author/netauthor/lihonggen0/

分享到:
评论

相关推荐

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

    本文将详细介绍两种在VB.NET中获取硬盘信息的方法:通过API函数GetDiskFreeSpaceEx和使用FSO(文件系统对象模型)。 **方法一:API函数GetDiskFreeSpaceEx** GetDiskFreeSpaceEx是Windows API提供的一个函数,可以...

    VB.Net 获取光驱等各种驱动器盘符及属性

    在VB.NET编程环境中,获取系统中的各种驱动器(包括但不限于光驱、磁盘等)的信息是一项常见的任务。这可以通过调用.NET Framework提供的`System.IO`命名空间下的类实现,具体而言是通过`DriveInfo`类来获取驱动器的...

    VB.net系统信息检测组件(SysInfo) v1.0官方版.rar

    总之,SysInfo v1.0官方版组件为VB.NET开发者提供了一个强大且易用的工具,使得获取和处理系统信息变得更加便捷。无论是初学者还是经验丰富的开发者,都可以通过这个组件轻松地将系统信息检测功能集成到自己的应用...

    asp.net网络硬盘

    ASP.NET网络硬盘的实现基于服务器端编程模型,主要使用C#或VB.NET语言编写,通过HTTP协议与客户端交互。它利用ASP.NET的页面生命周期管理、控件事件处理和状态管理等特性,实现了用户界面的动态生成和数据的处理。 ...

    VB得到计算机硬件信息

    在VB中,获取硬件信息主要通过以下几种方式: 1. **操作系统信息**:VB可以使用`WMI`(Windows Management Instrumentation)服务来获取系统信息,如操作系统版本、安装日期、制造商等。例如,通过`System....

    VB获取硬盘逻辑分区信息及U盘信息

    标题中的“VB获取硬盘逻辑分区信息及U盘信息”指的是使用Visual Basic(VB)编程语言来获取计算机硬盘的逻辑分区详细情况以及连接到电脑的USB闪存驱动器(U盘)的相关信息。VB是一种面向对象的编程语言,常用于开发...

    视频海康硬盘录像机二次开发vb 源码

    标题中的“视频海康硬盘录像机二次开发vb 源码”揭示了这是一个关于使用VB(Visual Basic)语言对海康品牌的硬盘录像机进行二次开发的项目。海康硬盘录像机是安防监控系统中常见的设备,它能记录并存储视频数据。二...

    网络硬盘毕业设计(asp.net)

    在网络硬盘设计中,会用到ASP.NET的页面生命周期、HTTP请求响应机制以及C#或VB.NET编程语言。 2. **数据库管理**:通常,网络硬盘会依赖于关系型数据库来存储用户信息、文件元数据等。SQL Server、MySQL或SQLite...

    SMART信息获取工具源代码(不用DDK)

    SMART(Self-Monitoring, Analysis, and Reporting Technology)是一种硬盘自我监测、分析和报告的技术,主要应用于现代硬盘驱动器中,用于预测硬盘可能出现的故障。它通过监控硬盘的运行状态,如读写错误率、磁盘...

    ASP.net学生信息管理系统

    在这个"ASP.NET学生信息管理系统"中,我们可以看到一个基于VB.NET语言实现的系统,用于管理和维护学生的信息。 首先,我们需要理解系统的部署过程。根据描述,我们可以将这个过程分为以下几个关键步骤: 1. **解...

    这个代码可以获取您的计算机的有关硬件设备信息以及软件信息,没有使用API,基于.NET Framework 2.0,使用了编写的WMI类文件

    在.NET Framework 2.0环境下,使用VB.NET编写代码来获取计算机的硬件和软件信息是一种常见的系统管理任务。在这个场景中,开发人员选择了不依赖特定的API(应用程序接口),而是利用Windows Management ...

    基于ASP.net的多语种网络硬盘系统源码.zip

    2. 后端逻辑:主要由C#或VB.NET编写的ASP.NET页面(.aspx文件)和类库(.cs或.vb文件),处理用户的请求,执行业务逻辑,与数据库交互。 3. 数据访问层(DAL):处理数据库操作,可能包含ADO.NET代码或Entity ...

    取U盘序列号.rar

    本资源“取U盘序列号.rar”提供了一种使用易语言编写的源码来实现这一功能的方法。易语言是一款中国本土开发的、以简单易学为特点的编程语言,它采用“中文编程”的理念,使得编程对于非专业人员来说更为友好。 ...

    ASP.NET源码——盛世桃源网络硬盘服务系统.zip

    它基于.NET Framework,使用C#或VB.NET等编程语言编写,提供了诸如页面生命周期管理、控件模型、内置的安全性、状态管理和缓存机制等功能。通过使用ASP.NET,开发者可以快速构建功能丰富的Web应用,同时享受到微软...

    Visual Basic.NET 串行化参考手册(PDG)

    除了上述基本串行化方法,VB.NET还支持数据合同(DataContract)和数据成员(DataMember)的串行化,这是WCF(Windows Communication Foundation)服务中常用的方式。这种方式更灵活,可以控制哪些字段参与串行化。 ...

    源码名称:取硬盘序列号ActiveX控件的创建及应用

    本项目“取硬盘序列号ActiveX控件的创建及应用”是针对VB6(Visual Basic 6)开发环境,用于在win2000/2003操作系统下,通过IIS5/6(Internet Information Services)服务器为ASP(Active Server Pages)或ASP.NET...

    Visual-Basic-.NET程序设计课程PPT文档.pptx

    - **Visual Studio .NET**:集成开发环境(IDE),支持多种.NET编程语言,如VB.NET、C#等。 - **.NET Framework**:提供了运行.NET程序所需的所有组件和服务,包括类库、Common Language Runtime(CLR)等。 #### ...

    ASP.NET基础资料

    - **强大性和适应性**: 基于.NET框架,ASP.NET 支持多种语言,如C#、VB.NET等,同时还具备良好的跨平台能力。 - **简单性和易学性**: 提供了许多内置功能,比如表单验证、身份验证等,降低了学习曲线。 - **高效可...

    asp.net 毕业设计

    此外,"网站"这个标签表明这是一个完整的Web站点项目,可能包括HTML、CSS、JavaScript以及C#或VB.NET等后端代码。ASP.NET MVC(Model-View-Controller)或ASP.NET Web Forms可能是这个项目采用的架构模式。MVC模式...

    bulkusb源码

    在Windows驱动开发中,Bulk USB(批量传输USB)是一种常见的USB设备通信协议,用于大量数据传输,如打印机、硬盘驱动器和扫描仪等。这种协议在USB设备类规范中定义,提供了一种高效且可靠的数据传输方式。 在源码...

Global site tag (gtag.js) - Google Analytics