Я предпочитаю избегать ошибки, а не погружаться прямо в нее ...
Используйте _winreg.QueryInfoKey , чтобы получить количество значений:
import _winreg
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER, r'PATH\TO\KEY', 0, _winreg.KEY_READ)
for i in xrange(0, _winreg.QueryInfoKey(key)[1]):
print _winreg.EnumValue(key, i)
Чтобы получить количество ключей, тот же метод, другой индекс (вторая половина исходного вопроса):
for i in xrange(0, _winreg.QueryInfoKey(key)[0]):
print _winreg.EnumKey(key, i)
Примечание: используйте import
вместо from ... import
чтобы было ясно, откуда берутся функции и переменные.Позволяет легче следовать коду позже в жизни.