Hi Robert and Michal,

Thanks for your responses.

1.  I was hung up the the fact that HKEY_CURRENT_USER appears to be a
constant to me.  Heretofore, I never heard of a constant having
methods.

# CODE START
  require 'win32/registry'
  require 'show'
  show %@Win32::Registry::HKEY_CURRENT_USER.class@
# CODE END

# OUTPUT START
  Win32::Registry::HKEY_CURRENT_USER.class
  => Win32::Registry
# OUTPUT END

So I now see that this HKEY_CURRENT_USER is an instance of the
Win32::Registry class.  OK, this is step 1 of my education.

I've visited the http://www.ruby-doc.org/ for the Win32:Registry
module
as well as the Microsoft site for the Registry API.  These two things,
plus the fact that I handled the Registry programatically with VC++/
MFC a decade earlier, means I should be fine now.

I am curious about one thing: I haven't been able to see how the above
construct really works, i.e. where's the code for it?  Maybe I didn't
read the RDoc carefully enough.  From Robert's inspection statement,
it looks like the expression returns an instance of of Win32::Registry
with an instance variable @key set to HKEY_CURRENT_USER.

Again, thanks for your responses.  I did look at the totality of
instance methods, though the Ruby-doc stuff is really what I needed to
look at.

Best wishes,
Richard

P.S.  The Microsoft site is http://msdn2.microsoft.com/en-us/library/ms724875.aspx.

On Jun 6, 5:09 am, Robert Klemme <shortcut... / googlemail.com> wrote:
> 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
> > becausehttp://www.ruby-doc.org/stdlib/libdoc/Win32API/rdoc/classes/Win32/Reg...
> > 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