codehaus


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Winreg


Use the Reply or Reply-To-All feature of your email program and it will do the rest for you.

Barry


> On 30 Jul 2020, at 20:14, R Pasco <pascor22234 at gmail.com> wrote:
> 
> I can't find instructions for the proper way to reply to 'python list'. Is
> it simply a matter of keeping the message title identical to the original
> message and emailing again to python-list at python.org ? I'll reply both ways
> to test this.
> 
> Yes, it's the 64/32-bit views that got me stuck. I think I've got it mostly
> figured out. The key HKEY_LOCAL_MACHINE:SOFTWARE requires KEY_WOW64_64KEY
> to be 'OR'ed. Winreg gives no indication of this requirement, but the
> Windows doc "Redirected, Shared, and Reflected Keys Under WOW64" does
> specifically mention  HKEY_CURRENT_USER :SOFTWARE as needing this added
> access.
> 
> By the way, I'm running python X64, so the program is a "64 bit"
> application. Strangely, the KEY_WOW64_32KEY access rights param also works
> identically.
> 
> To sum it up the pertinent code, so far, is:
> ======================================
>    # Be able to test creating both WOW64 and non-WOW64 key paths.
>    if 1 :
>        hive = winreg.HKEY_LOCAL_MACHINE
>        hivename = 'HKEY_LOCAL_MACHINE'
>    else :
>        hive = winreg.HKEY_CURRENT_USER
>        hivename = 'HKEY_CURRENT_USER'
>    #
>    parent_keypath = 'Software'   # Both hives happen to have this top
> level key.
>    newsubkey = 'AAA New Leaf Key, Process PID={}' .format( os.getpid() )
> 
>    # Note keys created in HKEY_LOCAL_MACHINE::SOFTWARE will be viewed in
> RegEdit
>    #   at HKEY_LOCAL_MACHINE:SOFTWARE\*Wow6432Node*\{newsubkey}.
> CreateKeyEx
>    #   access rights must be set to [winreg.KEY_ALL_ACCESS |
> winreg.KEY_WOW64_64KEY]
>    #     -OR-
>    #   [winreg.KEY_ALL_ACCESS | winreg.KEY_WOW64_32KEY] (??? Why does this
> also work ?)
>    #
>    newsubkeyPath = os.path.join( parent_keypath, newsubkey )
> 
>    valuename = 'NewString'
>    value = 'New String Value'
> 
>    with winreg.ConnectRegistry( None, hive ) as hivehndl :
> 
>        with winreg.OpenKeyEx( hivehndl, parent_keypath ) as
> parentpath_hndl :
> 
>            with winreg.CreateKeyEx( parentpath_hndl, newsubkey, 0,
>                # winreg.KEY_ALL_ACCESS | winreg.KEY_WOW64_64KEY ) as
> newkeyhndl :
>                winreg.KEY_ALL_ACCESS | winreg.KEY_WOW64_32KEY ) as
> newkeyhndl :
> 
>                winreg.SetValueEx( newkeyhndl, valuename, 0, winreg.REG_SZ,
> value )
> 
>    #end
> ======================================
> 
> Thanks for all the help.
> Ray Pasco
> -- 
> https://mail.python.org/mailman/listinfo/python-list
>