Найти - Пользователи
Полная версия: ActivePython & WMI
Начало » Python для экспертов » ActivePython & WMI
1 2
Все ники заняты
Можно ли в 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)
print
Получается, что с помощью моникера “winmgmts:\\” подключиться из Python к WMI нельзя?
И важный вопрос: а можно ли воспользоваться методом GetOwner (в приведённом коде закомментирован)?
Выдаёт такое:
Item.GetOwner(User, Domain)
^
IndentationError: unindent does not match any outer indentation level
bialix
Все ники заняты
Можно ли в 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”)
Все ники заняты
bialix
А обратные слэши кто экранировать будет???
Блин, и правда :). Спасибо, с экранированием всё работает.
Однако, вопрос про метод GetOwner в силе.
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)
print
Выдаёт такое:
Item.GetOwner(User, Domain)
TypeError: ‘int’ object is not callable
В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…
bialix
Все ники заняты
Нет, с вызовом 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
однако я не силен в таких делах, так что…
Все ники заняты
bialix
Меня берут смутные сомнения насчет User = None; Domain = None
Предварительное присваивание пустых строк вместо None тоже ничего не меняет.
DrTiBiBo
Хоть тема и старая, но вопрос по прежнему актуален, по крайней мере для меня.
Как заставить работать 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

Что не так?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB