By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,621 Members | 1,077 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,621 IT Pros & Developers. It's quick & easy.

Can python find HW/SW installed on my PC - like Belarc?

P: n/a
Lets suppose, I want a listing of what hardware and software is
installed on my
windows box. Can I do that with Python?

Apr 30 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
On Apr 30, 10:47 am, walterbyrd <walterb...@iname.comwrote:
Lets suppose, I want a listing of what hardware and software is
installed on my
windows box. Can I do that with Python?
Yes, it is possible for Windows. I don't know how to grab the info for
other OS's though. There is a caveat that is annoying. If the software
doesn't put itself into the registry somehow, it is much harder to
discover if it is indeed installed.

For hardware, you'll need the WMI module and the win32 module. For the
computer memory and the name of the PC, see below:

c = wmi.WMI()
for i in c.Win32_ComputerSystem():
mem = int(i.TotalPhysicalMemory)
compname = i.Name

For the CPU:

for i in c.Win32_Processor ():
cputype = i.Name

For other cool WMI tricks: http://tgolden.sc.sabren.com/python/wmi_cookbook.html

For the majority of the software on your system, you'll want to
iterate over the following registry key (and its subkeys) using the
_winreg module and WMI's Registry() function:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Uninstall

Some code that worked for me (may need modification for your setup):

from _winreg import HKEY_LOCAL_MACHINE, KEY_ALL_ACCESS, OpenKey,
EnumValue, QueryValueEx

r = wmi.Registry ()
result, names = r.EnumKey (hDefKey=HKEY_LOCAL_MACHINE,
sSubKeyName=r"Software\Microsoft\Windows\CurrentVe rsion\Uninstall")
for subkey in names:
try:
appFile.write('+++++++++++++++++++++++++++++++++++ +++++++++++++
+++++++++++++++++++++++++\n\n')
key = OpenKey(HKEY_LOCAL_MACHINE,
r"Software\Microsoft\Windows\CurrentVersion
\Uninstall\%s" % subkey,0, KEY_ALL_ACCESS)
try:
temp = QueryValueEx(key, 'DisplayName')
display = str(temp[0])
appFile.write('Display Name: ' + display + '\nRegkey: ' +
subkey + '\n')
except:
appFile.write('Regkey: ' + subkey + '\n')
except:
print 'Error opening key'

# appFile is where I write the list to. You can just print to console.

That should get you going.

Mike

Apr 30 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.