获取系统信息
OS Version
This component has been implemented in SystemOS project. Following APIs are used to extract this information.
GetVersionEx
If OSVERSIONINFOEX
structure is not available then you will have to take help of registry to determine if WinNT installation is Workstation, Server or Domain Controller. This information is available in ProductType
key under HKLM\\System\\CurrentControlSet\\Control\\ProductOptions
registry entry.
CPU
CPU’s approximate speed can be obtained from registry key ~MHz
under HKLM\\Hardware\\Description\\System\\CentralProcessor\\0
registry entry. This technique works on OS other than Win95. For rest of the CPU information, GetSystemInfo
API can be used.
Memory
This component has been implemented in SystemMemory project. You can use GlobalMemoryStatus
API to extract the information about system memory.
Mouse
This component has been implemented in SystemMouse project. You can use GetSystemMetrics
API to see if a mouse is present and if buttons are swapped or not. To get speed of mouse speed you can use SystemParametersInfo
API.
Storage
This component has been implemented in SystemStorage project. This extracts information about all the storage devices attached to a system, internal as well as external. You can use following APIs to accomplish the task of extracting the information.
GetLogicalDrives
GetDriveType
GetDiskFreeSpaceEx
GetVolumeInformation
Hard Disk
This component has been implemented in SystemHDisk project. This component extracts information about hard disk partitions only. This is accomplished by checking if the drive type is of DRIVE_FIXED or not.
nDriveType = ::GetDriveType (szCurrentDrive);
if (nDriveType == DRIVE_FIXED)
{
.
}
Following APIs are used to extract information.
GetLogicalDrives
GetDriveType
CreateFile
DeviceIoControl
Multimedia
This component has been implemented in SystemMultiMedia project. This component extracts information about any wave output audio device installed on the system. In the next release of this application, wave input and auxiliary input device information will also be added. Following APIs can be used to extract the information.
waveOutGetNumDevs
waveOutGetDevCaps
For this project, make sure that you are linking with winmm.lib
library and have following headers file included.
#include <mmsystem.h> #include <mmreg.h>
OS Protected Files
This component has been implemented in SystemProtectFiles project. The component extracts list of OS files that has been marked as protected. This feature Windows File Protection (WFP) has been introduced with Windows2000. WFP prevents the replacement of essential system files installed as part of Windows 2000. Applications should not overwrite these files because they are used by the system and other applications. Protecting these files prevents application and operating system failures. All Windows-based applications and their installation programs should be aware of WFP. SfcGetNextProtectedFile
API can be used to get the list of protected files.
Locale Information
To retrieve locale info there is only one API that you will require,GetLocaleInfo
. It is the second parameter to this call, LCType
, which you need to specify to get the specific piece of information you want. There are about 100 different values you can specify for this information. For more information on all of them, check the Platform SDK documentation for this API. E.g. If you want to get the English name of the country which was specified at the time of OS installation, you will use the value LOCALE_SENGCOUNTRY
for LCType
in GetLocaleInfo
call. I will not describe each and every value. I think documentation has done this job pretty well. For implementation look in the GetInformation
function call of CLocaleInformation
class in SystemLocale
project.
Misc
This component has been implemented in SystemMisc project. This component extracts information like logged in User Name, Machine Name, Local Language, etc. Following APIs can be used to get this information.
GetComputerName
GetUserName
GetSystemDefaultLangID