One way is to survey what the user's hardware, firmware, and software is.
On windows, to find the information for the current computer system, you can use
| GetSystemInfo(SYSTEM_INFO* system_info)
|
.
contains the processor architecture; page size; number of processors; processor type; etc. There is also
| GlobalMemoryStatus(MEMORYSTATUS* buffer)
|
to get the system currrent usage of physical and virtual memory.
Off the top of my head, I cannot tell you how to get other hardware (sound card, graphics card, etc.).
For finding software installed on windows, there is tool called
(
Windows
Management
Instrumentation
Command-line tool). Once you call it (in administrator mode), enter
| /output:C:\install_list.txt product get name,version
|
. To do this, you will probably need to ask the user's permission to do this. There may be a better way to do it but I don't know at this moment in time.
As for drivers/firmware: the command line tool is
. You can just output this to a text file.