Форум сайта python.su
Можно ли в 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)
Офлайн
Странно, что вот такой код вполне работоспособен:
import win32com.client
NameSpace = win32com.client.GetObject("WinNT:")
for Domain in NameSpace:
print Domain.Name
Офлайн
Работает вот так:
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)
Item.GetOwner(User, Domain)
^
IndentationError: unindent does not match any outer indentation level
Офлайн
Все ники занятыА обратные слэши кто экранировать будет???
Можно ли в 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)
Офлайн
bialixБлин, и правда :). Спасибо, с экранированием всё работает.
А обратные слэши кто экранировать будет???
Офлайн
Все ники занятыПитон ругается на отсутпы в тексте. Смотрите внимательнее исходники на наличие всяких лишних символов форматирования текста.bialixБлин, и правда :). Спасибо, с экранированием всё работает.
А обратные слэши кто экранировать будет???
Однако, вопрос про метод GetOwner в силе.
Офлайн
Нет, с вызовом 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)
Item.GetOwner(User, Domain)В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…
TypeError: ‘int’ object is not callable
Офлайн
Все ники занятыМеня берут смутные сомнения насчет User = None; Domain = None
Нет, с вызовом 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)Item.GetOwner(User, Domain)В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…
TypeError: ‘int’ object is not callable
Офлайн
bialixПредварительное присваивание пустых строк вместо None тоже ничего не меняет.
Меня берут смутные сомнения насчет User = None; Domain = None
Офлайн
Хоть тема и старая, но вопрос по прежнему актуален, по крайней мере для меня.
Как заставить работать GetOwner?
Мой кусок программы
for os in c.Win32_Process():
print os.Caption
os.GetOwner(myuser, dom)
print myuser
Отредактировано (Фев. 23, 2011 17:18:31)
Офлайн