[python-win32] unusual network load when querying a remote registry over wmi

Tim Golden mail at timgolden.me.uk
Thu Feb 4 12:23:07 CET 2010


On 04/02/2010 10:48, Eli Sandler wrote:
> I have a curious problem. I use Tim Golden’s module for WMI, and I use the
> ‘StdRegProv’ to query a remote registry over WMI. I get an unusual network load
> for this procedure.

> Using a packet capture, I saw that each new query contains all the previous ones.
> Do I use the module in a wrong way?
> Did anyone else encounter this problem?

Well I can simplify things for you slightly at the beginning:

<code>
import wmi

oReg = wmi.WMI (server, namespace="default", user=user, password=password).StdRegProv

</code>

Also you might perhaps simplify your code by using tuple unpacking
and by exploiting the fact that in Python anything empty evaluates
to False including 0, None and "":

<code>
import wmi

server = "BLAH"
user = password = ""

oReg = wmi.WMI (server, namespace="default", user=user, password=password).StdRegProv

result, subkeys = oReg.EnumKey( hive, key )
if result:
   print "Couldn't..."
   return

for subkey in subkeys:
   result, name = oReg.GetStringValue( hive, key+'\\'+subkey, "DisplayName" )
   if result:
     print "Couldn't get display name..."
     continue
   
   result, ver = oReg.GetStringValue( hive, key+'\\'+subkey, "DisplayVersion" )
   if result:
     ver = ""

   result, publisher = oReg.GetStringValue( hive, key+'\\'+subkey, "DisplayVersion" )
   if result:
     publisher = ""

# ... etc.

</code>

Obviously more refactoring could be done to drop the common code
into functions etc. But I'm sure you knew that.

However I can't see any particular reason why each new query should contain
all the previous ones. Can you show an example of your network trace?

TJG


More information about the python-win32 mailing list