From: Jeremy Date: 2007-03-22T06:56:15+09:00 Subject: Re: traverse windows registry From looking at the source the read bit should already be in a begin/rescue so it might be worth checking you have the latest version of ruby and the win32 stuff? I think that the problem is actually in the read method of registry.rb, doesn't seem to handle REG_NONE. You could change this method to make it work. Here's the original: def read(name, *rtype) type, data = API.QueryValue(@hkey, name) unless rtype.empty? or rtype.include?(type) raise TypeError, "Type mismatch (expect #{rtype.inspect} but #{type} present)" end case type when REG_SZ, REG_EXPAND_SZ [ type, data.chop ] when REG_MULTI_SZ [ type, data.split(/\0/) ] when REG_BINARY [ type, data ] when REG_DWORD [ type, API.unpackdw(data) ] when REG_DWORD_BIG_ENDIAN [ type, data.unpack('N')[0] ] when REG_QWORD [ type, API.unpackqw(data) ] else raise TypeError, "Type #{type} is not supported." end end Shea Martin wrote: > Shea Martin wrote: >> Is there an example of traversing the window registry? I can't seem >> to find any documentation on Win32::Registry. The ruby install came >> with some docs for Windows::Registry, but that seems to be a >> different animal... >> >> THanks, >> ~S > > > I have traversal code working. Just simple recursion. But I am having > trouble looping over values. An exception is thrown whenever a value > of type REG_NONE is found. This prevents me from iterating over other > values, due to the exception. Even if I rescue the exception, I am > still kicked out of the each_value loop. > > The problem is that each_value does a read, and read throws the > exception if the type is REG_NONE. see win32/registry.rb line 633. > > Is there anyway around this? > > Thanks, > ~S >