winreg, очевидно, предназначен только для Windows и не читает файлы кустов реестра (NTUSER.DAT и т. Д.), А напрямую обращается к реестру.
Что вам нужно, так это библиотека для разбора файлов кустов, и похоже, что эта может работать:
http://rwmj.wordpress.com/2010/11/28/use-hivex-from-python-to-read-and-write-windows-registry-hive-files/
Пример кода выглядит многообещающе:
# Use hivex to pull out a registry key.
h = hivex.Hivex ("/tmp/ntuser.dat")
key = h.root ()
key = h.node_get_child (key, "Software")
key = h.node_get_child (key, "Microsoft")
key = h.node_get_child (key, "Internet Explorer")
key = h.node_get_child (key, "Main")
val = h.node_get_value (key, "Start Page")
start_page = h.value_value (val)
#print start_page
# The registry key is encoded as UTF-16LE, so reencode it.
start_page = start_page[1].decode ('utf-16le').encode ('utf-8')
print "User %s's IE home page is %s" % (username, start_page)
Недостатком является то, что это все еще не чистый Python, а скорее оболочка Python для другой кроссплатформенной библиотеки.
Edit:
Если вы должны иметь чистый код Python без двоичных зависимостей, вы можете взглянуть на этот проект:
http://code.google.com/p/creddump/
Кажется, что это чистый python, и он способен читать кусты реестра кросс-платформенным способом, но специализированным инструментом, а не библиотекой - код там, вероятно, нуждается в некоторой адаптации.