On 06.06.2007 07:13, Richard wrote: > Hi, > > I'd like to be able to search a named hive for keys whose names match > a given regular expression. > > I found, for example: > > require 'win32/registry' > Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\\AdwareAlert\ > \AdwareAlert\\RegInfo') do |reg| > puts reg['OrderNo'] > end > > which let me specify a specific key in the HKCU hive and print the > value of one of its entries. > > I don't actually know why the foregoing is even syntactically correct > because http://www.ruby-doc.org/stdlib/libdoc/Win32API/rdoc/classes/Win32/Registry/Constants.html > says HKEY_CURRENT_USER is a constant in Win32::Registry. Why do you think this should disallow the syntax above? It's perfectly valid Ruby code. And that does not have to do anything with the fact that HKEY_CURRENT_USER is a constant. > Therefore, > it seems to me that HKEY_CURRENT_USER can't have a method "open". The documentation is probably a bit misleading: 11:06:11 [~]: ruby -r win32/registry -e 'k=Win32::Registry::HKEY_CURRENT_USER; p k, k.class, k.instance_variables.map {|v| "#{v}=#{k.instan ce_variable_get v}"}' #<Win32::Registry key="HKEY_CURRENT_USER"> Win32::Registry ["@keyname=HKEY_CURRENT_USER", "@parent=", "@hkey=2147483649", "@disposition=2"] Does that fix your irritation? :-) Btw, if you do this you'll see some methods that might actually do what you need (find for example). ruby -r win32/registry -e 'puts Win32::Registry.instance_methods.sort' Kind regards robert