65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 System Information II 了解您计算机的所有信息

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (19投票s)

2010年3月19日

CPOL

2分钟阅读

viewsIcon

42036

downloadIcon

2478

VB.NET 程序提供关于您的硬件和操作系统的信息

SystemInformation2EventViewer.jpg

引言

我一直对使用的电脑的技术细节很感兴趣。我知道如何使用各种实用程序来查找大部分硬件和操作系统细节,但我希望编写一个程序,使用 .NET Framework 来获取大部分信息。我几年前开始用 VB.NET 编写这个实用程序,这个版本是经过多次修改和补充的结果。

除了信息外,这个实用程序还提供控制显示信息的能力。您可以启动/停止驱动程序和服务,卸载程序,控制进程,设置 OEM 电脑信息(包括徽标/图片),共享/取消共享文件夹,删除启动程序,以及修改用户/公司信息。

完整的类别列表是 BiosComponentsComputerCPUDateAndTimeDesktopDriversDrivesEnvironmentVariablesEventViewerFileTypesFontsInstalledProgramsIntroductionKeyboardMultimediaCodecsNetworkOEMInformationOperatingSystemPointingDevicePortsProcessesServicesSharesSoundSpecialFoldersStartupProgramsUsbDevicesUserInformationVideoVisualStylesWin32Explorer Hardware、Win32Explorer Memory、Win32Explorer Network、Win32Explorer Storage、Win32Explorer System 和 Win32Explorer Users。

通过检查源代码,这个应用程序将使读者熟悉 .NET WMI 类方法、用作 UserControl 的 Panels、TreeViewListViewListViewGroup

设计

每个信息类别都实现为一个用户控件,其中包含一个带有用户界面的面板和该类别的代码。使用树形视图控件选择每个类别,并将用户控件面板添加到主窗体中的分割容器中。这使得添加或修改信息类别变得容易,因为每个类别几乎都像一个独立的程序一样运行。许多用户控件(面板)都依赖于一个名为“ComputerInformation”的大类,该类包含程序中的大部分逻辑。这个大类是早期版本的遗留物。在未来的修订版中,我希望将这个类分解成更小的类,每个类对应一个信息类别。

Using the Code

我尽量做到整洁和一致。我还尝试为控件和变量使用描述性名称。代码中也有相当多的注释。

将用户控件添加到分割容器

' Display the correct panel based on the node that was selected.
Private Sub TreeviewSystemInfo_AfterSelect(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.TreeViewEventArgs) _
			Handles TreeViewSystemInfo.AfterSelect
    Select Case e.Node.Text
        Case "Computer"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Computer.CreateInstance())
        Case "CPU"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Cpu.CreateInstance())
        Case "BIOS"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Bios.CreateInstance())
        Case "Drives and Volumes"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Drives.CreateInstance())
        Case "Network"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Network.CreateInstance())
        Case "Sound"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Sound.CreateInstance())
        Case "Video"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Video.CreateInstance())
        Case "Operating System"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(OperatingSystem.CreateInstance())
        Case "Date and Time"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(DateAndTime.CreateInstance())
        Case "Installed Programs"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(InstalledPrograms.CreateInstance())
        Case "Services"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Services.CreateInstance())
        Case "Startup Programs"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(StartupPrograms.CreateInstance())
        Case "Special Folders"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(SpecialFolders.CreateInstance())
        Case "Environment Variables"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(EnvironmentVariables.CreateInstance())
        Case "OEM Information"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(OemInformation.CreateInstance())
        Case "Processes"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Processes.CreateInstance())
        Case "User Information"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(UserInformation.CreateInstance())
        Case "Visual Styles"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(VisualStyles.CreateInstance())
        Case "Fonts"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Fonts.CreateInstance())
        Case "Event Viewer"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(EventViewer.CreateInstance())
        Case "Drivers"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Drivers.CreateInstance())
        Case "Components"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Component.CreateInstance())
        Case "Shares"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Shares.CreateInstance())
        Case "File Types"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(FileTypes.CreateInstance)
        Case "Keyboard"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Keyboard.CreateInstance())
        Case "Pointing Device"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(PointingDevice.CreateInstance())
        Case "Multimedia Codecs"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add_
			(MultimediaCodecs.CreateInstance())
        Case "Desktop"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Desktop.CreateInstance())
        Case "USB Devices"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(UsbDevices.CreateInstance())
        Case "Ports"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Ports.CreateInstance())
        Case "Win32 Hardware"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32Hardware.CreateInstance())
        Case "Win32 Storage"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32Storage.CreateInstance())
        Case "Win32 Memory"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32Memory.CreateInstance())
        Case "Win32 System"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32System.CreateInstance())
        Case "Win32 Network"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32Network.CreateInstance())
        Case "Win32 Users"
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Win32Users.CreateInstance())
        Case Else
            SplitContainerSystemInfo.Panel2.Controls.Clear()
            SplitContainerSystemInfo.Panel2.Controls.Add(Introduction.CreateInstance())
    End Select

结论

我希望这个程序不仅对您了解电脑的信息有用,而且对您找到可以用来提取或更改这些信息的代码有用。对类别添加的建议始终受到欢迎。 此外,任何关于如何改进此代码的建议也将不胜感激。

© . All rights reserved.