_winreg error on open key (64bit) - proper usage of _winreg.DisableReflectionKey

Randall Walls randall.walls at gmail.com
Tue Nov 17 14:29:52 EST 2009


I don't believe so, but it seems like I'm in a catch 22, where I need to
_winreg.OpenKey the key first before I can pass it to
_winreg.DisableReflectionKey, but it doesn't exist, so I can't open it.

I did find out that I can open the key using:
hKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r"SOFTWARE\ODBC\ODBC.INI\
DRSQL2000_mu0100\\", 0, _winreg.KEY_READ | _winreg.KEY_WOW64_64KEY)

The 'trick' was adding _winreg.KEY_WOW64_64KEY, which apparently tells the
system to look in the 64bit key area, and not under the Wow6432Node. That
brings up problem #2, though... I can't seem to CREATE a key in the above
path, and _winreg.CreateKey doesn't accept _winreg.KEY_WOW64_64KEY (in fact
it doesn't accept any options other than key, sub_key). _winreg.CreateKey
does work, it just puts the key in SOFTWARE\Wow6432Node\ODBC\ODBC.INI. So
I'm in a quandry... I'd like to use one or the other, and not have to
account for both.

much obliged

On Tue, Nov 17, 2009 at 2:18 PM, Nick Stinemates <nick at stinemates.org>wrote:

> From _winreg.c:
>
> "Disables registry reflection for 32-bit processes running on a 64-bit
> OperatingSystem. Will generally raise NotImplemented if executed on a 32-bit
> Operating System. If the key is not on the reflection list, the function
> succeeds but has noeffect. Disabling reflection for a key does not affect
> reflection of any subkeys."
>
> Are there any subkeys which you also need to disable? Parent keys?
>
>
> On Tue, Nov 17, 2009 at 01:51:12PM -0500, Randall Walls wrote:
> > Greetings,
> >
> > I'm writing a python script to automate creating ODBC connections on a
> > Windows2008 Server (64bit) platform. I created an ODBC manually (using
> the
> > GUI), for the purposes of fleshing out the 'check for existing' section
> of
> > the script.
> >
> > Problem: though I can see the key in regedit
> > (HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\DRSQL2000_muXXXX), calling an
> > _winreg.OpenKey returns 'WindowsError: [Error 2] The system cannot find
> the
> > file specified'. Googling the error brought up the possibility that this
> key
> > is being impacted by registry redirection (
> > http://mail.python.org/pipermail/python-win32/2009-February/008862.html
> ),
> > and thus the need to use _winreg.DisableReflectionKey to correct this.
> >
> > I'm new to using _winreg (but not new to python), and though it sounds
> > simple, I can't figure out how to properly use
> _winreg.DisableReflectionKey
> > to make the _winreg.OpenKey work properly, and there is nearly 0
> > documentation on how to use _winreg.DisableReflectionKey (though I would
> be
> > happy to write something up if I could figure the damned thing out).
> >
> > any help is appreciated. Has anyone else run into this before? I realize
> > that Server 2008 is new and that _winreg.DisableReflectionKey was just
> > added, but I'm still hoping SOMEBODY has run into this before.
> >
> > Many thanks,
> >
> > --
> > Randall Walls
> > Tyler Technologies, Inc
>
> > --
> > http://mail.python.org/mailman/listinfo/python-list
>
>


-- 
Randall
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20091117/5d47e643/attachment.html>


More information about the Python-list mailing list