[Tutor] _winreg problems enumerating

Liam Clarke cyresse at gmail.com
Thu Apr 14 21:58:03 CEST 2005


Hi Tim,

Change this - 

try:
while 1:
test_key = regKeys.append(_winreg.EnumValue(hkey, i))
print test_key
i += 1
except EnvironmentError:
pass

to

try:
while 1:
regKeys.append(_winreg.EnumValue(hkey, i))
print regKeys[i]
i += 1
except EnvironmentError:
pass


What this does test_key = regKeys.append(_winreg.EnumValue(hkey, i)) is 
assign to test_key any value the append may return, which is None.

Out of curiosity, you know how lists work in Python?


Regards, 


Liam Clarke


On 4/15/05, Gallagher Timothy-TIMOTHYG <TIMOTHYG at motorola.com> wrote:
> 
> It seems to work but the output isn't right. I do have 10 things in the 
> Run
> folder but the out put is not telling me what they are, it just says none
> for each entry. I guess that I am not sure what to do now. I can do this
> in Perl and other languages but I really want to learn Python.
> 
> Here is what I have done:
> import _winreg
> host = "127.0.0.1 <http://127.0.0.1>" # local host
> key = _winreg.ConnectRegistry(host, _winreg.HKEY_LOCAL_MACHINE)
> hkey = _winreg.OpenKey(key,
> r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
> i = 0
> regKeys = []
> try:
> while 1:
> test_key = regKeys.append(_winreg.EnumValue(hkey, i))
> print test_key
> i += 1
> except EnvironmentError:
> pass
> 
> when I run this script I am getting this for my output:
> None
> None
> None
> None
> None
> None
> None
> None
> None
> None
> 
> Thanks
> Tim
> 
> Timothy F. Gallagher
> Timothyg- AT 0-Motorola.com <http://0-Motorola.com>
> 
> 
> 
> ________________________________________
> From: Liam Clarke [mailto:cyresse at gmail.com]
> Sent: Wednesday, April 13, 2005 9:45 PM
> To: Gallagher Timothy-TIMOTHYG; tutor at python.org
> Subject: Re: [Tutor] _winreg problems enumerating
> 
> Hi Tim,
> 
> Hmmm, I may have to play with _winreg, is is new with Python 2.4?
> 
> Anyway, from the _winreg docs -
> EnumValue(
> key, index)
> Enumerates values of an open registry key, returning a tuple.
> key is an already open key, or any one of the predefined HKEY_* constants.
> index is an integer that identifies the index of the value to retrieve.
> The function retrieves the name of one subkey each time it is called. It 
> is
> typically called repeatedly, until an EnvironmentError exception is 
> raised,
> indicating no more values.
> 
> There's your issue -
> E_key =
> _winreg.EnumValue(key,r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
> The second value needs to be an integer that is an index.
> Typical usage would look like this -
> i = 0
> regKeys = []
> try:
> while 1:
> regKeys.append(_winreg.EnumValue(key, i))
> i += 1
> except EnvironmentError:
> pass
> 
> Good luck,
> 
> Liam Clarke
> 
> On 4/14/05, Gallagher Timothy-TIMOTHYG <TIMOTHYG at motorola.com> wrote:
> am new to python and want to learn this language.I am having troubles
> finding examples and tutorials for use on windows boxes.I do most of my
> stuff in perl and php but want better socket support, so I am giving 
> python
> a try.I am writing a script to connect to remote registry's because of
> this new IM virus.I can create reg entries and delete them but I cannot
> enumerate them, here is my code.
> 
> import _winreg
> 
> host = " 127.0.0.1 <http://127.0.0.1>" # local host
> key = _winreg.ConnectRegistry(host, _winreg.HKEY_LOCAL_MACHINE)
> E_key = _winreg.EnumValue(key,
> r"SOFTWARE\Microsoft\Windows\CurrentVersion\Run")
> 
> I get an error when I run the script:
> 
> Traceback (most recent call last):
> File "reg4.py", line 9, in ?
> E_key = _winreg.EnumValue(key,
> r"SOFTWARE\Microsoft\Windows\CurrentVersion\R
> un")
> TypeError: an integer is required
> 
> Can someone tell me what I am doing wrong???
> 
> Thanks
> 
> Timothy F. Gallagher
> Timothyg- at -Motorola.com <http://Motorola.com>
> 
> _______________________________________________
> Tutor maillist-Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 
> --
> 'There is only one basic human right, and that is to do as you damn well
> please.
> And with it comes the only basic human duty, to take the consequences.'
> 



-- 
'There is only one basic human right, and that is to do as you damn well 
please.
And with it comes the only basic human duty, to take the consequences.'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20050415/d9907098/attachment.htm


More information about the Tutor mailing list