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
contains the processor architecture; page size; number of processors; processor type; etc. There is also
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
ommand-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.