import win32con
import win32api

def look(parent, value):
    handle = win32api.RegOpenKeyEx(parent, value, win32con.KEY_ALL_ACCESS)
    counter = 0
    Name = ""
    Version = ""
    try:
        (Name, ValueType)=win32api.RegQueryValueEx(handle, "DisplayName")
    except:
        pass
    try:
        (Version, ValueType)=win32api.RegQueryValueEx(handle, "DisplayVersion")
    except:
        pass

    if len(Version) > 0:
        print "Installed : %s - %s" % (Name, Version)
    elif len(Name) > 0:
        print "Installed : %s" % (Name)
#    while 1:
#        try:
#            values = win32api.RegEnumValue(handle, counter)
#            counter = counter + 1
#        except:
#            break
        
    counter = 0
    while 1:
        try:
            subkey = win32api.RegEnumKey(handle, counter)
            look(handle, subkey)
            counter = counter + 1
        except:
            break        


def getosinfo():
    key = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\",win32con.KEY_ALL_ACCESS)
    counter = 0
    while 1:
        try:
            value = win32api.RegEnumValue(key, counter)
            print value
            counter = counter + 1
        except:
            break

def getprecos():
    key = win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\", win32con.KEY_ALL_ACCESS)
    try:
        (Prev, ValuteType) = win32api.RegQueryValueEx(key, "PrevOSVersion")
        print "Precedent OS :", prev
    except:
        pass

def getmacaddress(parent, value):
    handle = win32api.RegOpenKeyEx(parent, value, win32con.KEY_ALL_ACCESS)
    counter = 0
    Name = ""
    Version = ""
    try:
        (Name, ValueType)=win32api.RegQueryValueEx(handle, "NetworkAddress")
        print "Network Address: %s" % (Name)
    except:
        pass
        
    counter = 0
    while 1:
        try:
            subkey = win32api.RegEnumKey(handle, counter)
            getmacaddress(handle, subkey)
            counter = counter + 1
        except:
            break        


key = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\"
RootKey=win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, key,win32con.KEY_ALL_ACCESS)
getmacaddress(RootKey,"")
getosinfo()
print "foo"
RootKey=win32api.RegOpenKeyEx(win32con.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\",win32con.KEY_ALL_ACCESS)
look(RootKey, "")