[python-win32] Vista, _winreg and "Access denied"

le dahut le.dahut at laposte.net
Mon Jun 2 17:46:31 CEST 2008


Hello,
I've passed some time reading the MS coding guide for Vista 
http://msdn.microsoft.com/en-us/library/bb756973.aspx

It explains that an app requiring administrator rights (modify HKLM, 
write in C:\Windows\, etc.) will always return "Access denied" or ask 
the user for UAC if it's launched with the appropriate manifest or with 
"runas".
You can personalize the UAC prompt by a short description of your 
program and an icon.

In short, if your user app does something like that, rewrite it using a 
service.



Mark Hammond a écrit :
>> With Vista (XP works fine), when using SetValueEx in a script ran by an
>> administrator I get "Access Denied". I know that's it's due to UAC so
>> does someone know how to do a 'sudo' when using something else than
>> CreateProcess ?
> 
> The short version of my understanding of Vista and UAC:  Firstly, an
> existing process can not be elevated - once you are running, you are out of
> luck - your option is, basically, re-execute yourself requesting elevation
> and have the new process retry the operation (the exception is when you are
> using a COM object - in which case you can ask for an "elevated" COM object
> - but that is rare, so I'm treating it as the exception :)  If you want to
> reexecute yourself, IIUC you are limited to calling ShellExecute(Ex), with
> the "verb" set to "runas" - which can be a PITA, but I'm not aware of other
> options.  My current best guess for when you might *need* to do this if is
> win32com.shell.IsUserAnAdmin() returns true (which needs pywin32-211, which
> I promise is in the process of being tested right now :)
> 
> As Tim said though, please read MSDN and all other references you can find,
> and please correct me if I'm wrong/mistaken/confused/etc for everyone elses
> benefit...
> 
> Cheers,
> 
> Mark 
> 
> 
> 


More information about the python-win32 mailing list