P
Phil Tomson
There probably aren't a lot of WinXP-64bit users out there yet, but I
post this for future reference:
I was using the win32/registry (as in 'require "win32/registry"')
package to access the registry to figure out if certiain apps were
installed on a Windows box. The script worked fine on my Win2K box,
but when someone tried it on their WinXP-64bit edition box it didn't
find the installed apps as it should have.
Turns out that in 64bit windows there are two sections to the
registry, a 32bit section and a 64bit section. I couldn't see the
64bit apps from the Ruby script (using the standard Ruby install
created by Andy Hunt, so it's 32 bits). After some research, I found
out that you've got to add some new registry access rights.
The solution is that you need to add some new access rights keys in
your Win32::Registry::Constants module:
KEY_WOW64_64KEY = 0x0100
KEY_WOW64_32KEY = 0x0200
And then OR them into KEY_READ:
KEY_READ = STANDARD_RIGHTS_READ | KEY_WOW64_64KEY |
KEY_WOW64_32KEY |
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
After I did that it worked fine – I was able to see the 64bit registry
entries.
How's that for obscure? ;-)
You can find more info here:
http://msdn.microsoft.com/library/d...e/registry_key_security_and_access_rights.asp
I've notified Usa Nakamura who I'm told is the registry.rb maintainer,
so hopefully, by the time you need this in the 64bit future it will
work OK out of the box.
Phil
post this for future reference:
I was using the win32/registry (as in 'require "win32/registry"')
package to access the registry to figure out if certiain apps were
installed on a Windows box. The script worked fine on my Win2K box,
but when someone tried it on their WinXP-64bit edition box it didn't
find the installed apps as it should have.
Turns out that in 64bit windows there are two sections to the
registry, a 32bit section and a 64bit section. I couldn't see the
64bit apps from the Ruby script (using the standard Ruby install
created by Andy Hunt, so it's 32 bits). After some research, I found
out that you've got to add some new registry access rights.
The solution is that you need to add some new access rights keys in
your Win32::Registry::Constants module:
KEY_WOW64_64KEY = 0x0100
KEY_WOW64_32KEY = 0x0200
And then OR them into KEY_READ:
KEY_READ = STANDARD_RIGHTS_READ | KEY_WOW64_64KEY |
KEY_WOW64_32KEY |
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY
After I did that it worked fine – I was able to see the 64bit registry
entries.
How's that for obscure? ;-)
You can find more info here:
http://msdn.microsoft.com/library/d...e/registry_key_security_and_access_rights.asp
I've notified Usa Nakamura who I'm told is the registry.rb maintainer,
so hopefully, by the time you need this in the 64bit future it will
work OK out of the box.
Phil