Its actually very easy with Visual Basic.NET VB 2008, VB.NET 2010, 2013, and Higher to detect the cpu or core count for the computer. Below is the very simple way to do it which will return the total number of logical processors installed in the computer…
' 'This works for Visual Basic 2005 and Higher. ' 'The code we want is under the System.Environment Namespace and is the ProcessorCount 'property. MsgBox(System.Environment.ProcessorCount.ToString)
What if you want to get the CPU/Processor/Core count with Visual Basic.NET 2002 or 2003?
Well, .NET version 1.1 and older does not have the ProcessorCount property like version 2.0 of the .NET Framework. But that doesn’t mean it can’t be done. Its actually not to awfully hard to do. Below is a way to do it using the Windows system Registry…
' 'The registry path to get the info we are wanting. Dim str As String = "HARDWARE\DESCRIPTION\System\CentralProcessor" ' 'Returns how many SubKeys are under “CentralProcessor”. The subKey count under this key '=’s the‘total cpu’s your system has installed. Of course, 90% or so will only have 1x 'subkey denoting a ‘single cpu system. My system happens to return 2x subkeys since I 'have a Dual Core system. Dim cpuCount As Integer = My.Computer.Registry.LocalMachine.OpenSubKey(str, False).SubKeyCount MsgBox(cpuCount.ToString)
The Messagebox will then throw a Dialog with the total number of cpu’s/core’s on the current computer. I do not know though if this works on all Windows operating systems.
You can also use the Windows Management Instrumentation (WMI) and get the total instances of the class.
Below is a simple way to use WMI to return the computers CPU/Core Count…
' 'Create a Instrument Class and Object. Dim wmiClass As New System.Management.ManagementClass Dim wmiObject As New System.Management.ManagementObject ' 'Set the PAth to “Win32_Processor” which is where we want to get info. wmiClass.Path.RelativePath = "Win32_Processor" ' 'Last of all, just check how many instances is available and that will be your cpu/core count. MsgBox(wmiClass.GetInstances.Count)
Executing the code above will tell you how many cpus are on the computer since there is a class instance for each CPU/processor/core on the current computer.
Take care 🙂