Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Май 12, 2007 16:11:00

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Можно ли в ActivePython 2.5 работать с WMI?

import win32com.client
objWMI = win32com.client.GetObject("winmgmts:\\.\root\CIMV2")
Выдаёт такое:
Traceback (most recent call last):
objWMI = win32com.client.GetObject(“winmgmts:\\.\root\CIMV2”)
File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 73, in GetObject
return Moniker(Pathname, clsctx)
File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 88, in Moniker
moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147217375, ‘OLE error 0x80041021’, None, None)



Офлайн

#2 Май 12, 2007 16:25:04

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Странно, что вот такой код вполне работоспособен:

import win32com.client
NameSpace = win32com.client.GetObject("WinNT:")
for Domain in NameSpace:
print Domain.Name



Офлайн

#3 Май 12, 2007 16:44:05

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Работает вот так:

import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")
for Item in colItems:
print Item.Caption
print Item.ProcessId
print Item.CommandLine
User = None; Domain = None
# Item.GetOwner(User, Domain)
print
Получается, что с помощью моникера “winmgmts:\\” подключиться из Python к WMI нельзя?
И важный вопрос: а можно ли воспользоваться методом GetOwner (в приведённом коде закомментирован)?
Выдаёт такое:
Item.GetOwner(User, Domain)
^
IndentationError: unindent does not match any outer indentation level



Офлайн

#4 Май 12, 2007 22:32:54

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Все ники заняты
Можно ли в ActivePython 2.5 работать с WMI?
import win32com.client
objWMI = win32com.client.GetObject("winmgmts:\\.\root\CIMV2")
Выдаёт такое:
Traceback (most recent call last):
objWMI = win32com.client.GetObject(“winmgmts:\\.\root\CIMV2”)
File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 73, in GetObject
return Moniker(Pathname, clsctx)
File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 88, in Moniker
moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147217375, ‘OLE error 0x80041021’, None, None)
А обратные слэши кто экранировать будет???
Хотя бы надо

objWMI = win32com.client.GetObject(r“winmgmts:\\.\root\CIMV2”)



Офлайн

#5 Май 12, 2007 23:04:21

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

bialix
А обратные слэши кто экранировать будет???
Блин, и правда :). Спасибо, с экранированием всё работает.
Однако, вопрос про метод GetOwner в силе.



Офлайн

#6 Май 13, 2007 10:01:01

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Все ники заняты
bialix
А обратные слэши кто экранировать будет???
Блин, и правда :). Спасибо, с экранированием всё работает.
Однако, вопрос про метод GetOwner в силе.
Питон ругается на отсутпы в тексте. Смотрите внимательнее исходники на наличие всяких лишних символов форматирования текста.



Офлайн

#7 Май 14, 2007 22:58:08

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Нет, с вызовом GetOwner что-то не то… Сейчас уже почему-то не могу воспроизвести те же самые сообщения об ошибках (может, напутал что). Код:

import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")
for Item in colItems:
print Item.Caption
User = None; Domain = None
Item.GetOwner(User, Domain)
print
Выдаёт такое:
Item.GetOwner(User, Domain)
TypeError: ‘int’ object is not callable
В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…



Офлайн

#8 Май 15, 2007 00:28:10

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

Все ники заняты
Нет, с вызовом GetOwner что-то не то… Сейчас уже почему-то не могу воспроизвести те же самые сообщения об ошибках (может, напутал что). Код:
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")
for Item in colItems:
print Item.Caption
User = None; Domain = None
Item.GetOwner(User, Domain)
print
Выдаёт такое:
Item.GetOwner(User, Domain)
TypeError: ‘int’ object is not callable
В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…
Меня берут смутные сомнения насчет User = None; Domain = None
однако я не силен в таких делах, так что…



Офлайн

#9 Май 15, 2007 14:37:45

Все ники заняты
От:
Зарегистрирован: 2007-02-18
Сообщения: 156
Репутация: +  1  -
Профиль   Отправить e-mail  

ActivePython & WMI

bialix
Меня берут смутные сомнения насчет User = None; Domain = None
Предварительное присваивание пустых строк вместо None тоже ничего не меняет.



Офлайн

#10 Фев. 23, 2011 17:13:05

DrTiBiBo
От:
Зарегистрирован: 2011-02-23
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

ActivePython & WMI

Хоть тема и старая, но вопрос по прежнему актуален, по крайней мере для меня.
Как заставить работать GetOwner?
Мой кусок программы

for os in c.Win32_Process():
print os.Caption
os.GetOwner(myuser, dom)
print myuser
Выдает ошибку
System Idle Process
Traceback (most recent call last):
File “Hello.py”, line 15, in <module>
os.GetOwner (myuser, dom)
NameError: name ‘myuser’ is not defined

Что не так?



Отредактировано (Фев. 23, 2011 17:18:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version