| | | | |
WMI - практика применения в Delphi | Полный текст материала
Цитата или краткий комментарий: «... Теперь программисты всех "вероисповеданий" могут определить, какое оборудование установлено на их компьютере, узнать информацию о материнской плате и процессоре, параметры БИОСа, какие процессы запущены в данный момент, какова температура процессора и скорость вращения кулера, какие настройки графической системы, какие.… ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 34 | 100% | | | | Ничего особенно нового и интересного | [2] | 0 | 0% | | | | Написано неверно (обязательно укажите почему) | [3] | 0 | 0% | | Всего проголосовали: 34 | | | Все понятно, материал читается легко | [1] | 25 | 83.3% | | | | Есть неясности в изложении | [2] | 4 | 13.3% | | | | Непонятно написано, трудно читается | [3] | 1 | 3.3% | | Всего проголосовали: 30 |
[Работа с портами, аппаратурой] [Взаимодействие с 'чужими' процессами/приложениями] [Информация о системе, использованных ресурсах и т.д.]
Отслеживать это обсуждение
Всего сообщений: 6824-04-2015 02:59
07-05-2010 10:51Эй, это все лишь шутка :D
А статьи всё равно неплохие. |
|
07-05-2010 08:32to Александр Алексеев:
Вообще-то, это реклама на грани фола :D
По закону о рекламе (если бы его можно было применить к рекламированию новой фичи Винды по отношению к какой-нибудь старой фиче этой же Винды) запрещено выстраивать конструкции, что обладание новой вещью даст клиенту какое-то преимущество в области, не связанной непосредственно с этой вещью. Блин, не знаю, как правильно сказать. Короче, нельзя в рекламе говорить, что Петя гуляет с Машей, потому что чистит зубы такой-то вот крутой зубной пастой, а Саша сидит один, потому что не использует эту зубную пасту.
Ну и кроме буржуйского закона о рекламе... Обычный здравый смысл. Как связаны "ягуары", "порше" и "ролексы" с WMI?! И если я сейчас напишу WMI-скрипт, то значит ли это, что домой я поеду на Ягуаре, а не на трамвае? ;-) |
|
07-05-2010 07:04Позволю себе привести ещё две ссылочки в тему:
Вы всё ещё не используете WMI? Часть 1
Вы всё ещё не используете WMI? Часть 2
Если ты один из большинства админов, ты частенько грустишь, выглядывая из окна и наблюдая, как некоторые твои собратья ездят
на своих «Ягуарах» и «Порше» или готовятся дернуть в Монте-Карло или какое-нибудь другое экзотическое место.
И, конечно же, ты говоришь себе: «Я знаю о системном администрировании столько же, сколько и они, но почему именно
у них есть клёвые тачки, яхты и часы «Ролекс»».
Что ж, мы здесь для того, чтобы приоткрыть тебе небольшой секрет. Это все потому, что они знают, как писать WMI-скрипты, а ты – нет!
Microsoft TechNet:
Bob Wells, Dean Tsaltas, Ethan Wilansky и Greg Stemp
http://www.microsoft.com/technet/scriptcenter/tools/wmimatic.mspx |
|
07-05-2010 04:56В общую копилку, у Microsoft есть программка WMI Code Creator, уж действительно раскрывающая все возможностям WMI, правда она генерирует basic скрипты, но для подглядывания достаточно. |
|
16-03-2009 09:19
07-03-2009 16:13Впрочем, и экзешники, которые были представлены в самой статье - работают как-то кривовато. Полностью нормально отработала только та программулинка, которая процессы показывает. Я даже никогда не представлял себе, что о процессах можно СТОЛЬКО МНОГО ВСЕГО знать. Но мне это знание ни к чему. Мне температура процессора нужна...
Есть ли такие люди, которым все-таки удалось получить температуру процессора через WMI?
И если да, - помогите, пожалуйста??
Прочитал обсуждение... первый вопрос: что именно скачать?? Половина ссылок в этой ветке - уже битые (за давностью лет). Я скачал следующее:
WMITools.exe
wmiirdist.msi
wmint4.exe
WMIDiag.exe
WMICodeCreator.zip.zip
PSDK-ia64.exe
WMI SDK в "чистом виде" для своей версии (ХР64) винды я не смог найти... видел очень многое для Windows Server 2008, но у меня нет никакого желания переустанавливать ОС только ради того, чтобы...
В общем, первый вопрос - что именно скачивать? (Если можно, - прямую ссылку, плз).
Буду безмерно благодарен!
Второй вопрос, - что такое "испортировать библиотеки типов"?... где брать эти библиотеки? откуда и куда их импортировать? Средсвами какого ПО? или это - надо просто скопировать что-то куда-то? |
|
07-03-2009 16:04
WMI для определения температуры процессора и мат платы не подходит - не выдает результатов. Вот мое сообщение где расписал как можно получить все эти температуры. Там же есть исходник и мой проект
http://www.programmersforum.ru/showthread.php?t=5420&highlight=%F2%E5%EC%EF%E5%F0%E0%F2%F3%F0%E0
Скачал. Не работает. Экзешник запускается, и даже показывает значения, но ежесекундно выдает ошибку. Исходник - компилируется и сразу выдает фатальную ошибку (программа не работает, ее можно только снять средствами Дельфи). |
|
25-05-2008 06:42
03-03-2008 20:12Таже проблема что и в сообщении dim:
При удаленном запуске, приложение запускается (его видно в таск менаджере), но остается не активным.
Флаг objConfig.ShowWindow = SW_NORMAL установлен.
Причем если запускать локально этот скрипт, то все нормально запускается.
PS
Мухтар если что знаеш буть конкретней.
|
|
18-02-2008 19:55я не знаю где эта галочка :( я сделал вот так:
Process:= Services.Get('Win32_ProcessStartup',0,nil);
ObjConf := Process.SpawnInstance_(0);
propvalue := 1;
objConf.Properties_.Item('ShowWindow',0).Set_Value(propvalue);
Process:= Services.Get('Win32_Process', 0, nil);
// см. Примечание 2
Method:= Process.Methods_.Item('Create', 0);
// см. Примечание 3
InParam:= Method.InParameters.SpawnInstance_(0);
// см. Примечание 4
MyProperty := InParam.Properties_. Add('CommandLine', wbemCimtypeString, False, 0);
PropValue:= 'Notepad.exe';
MyProperty.Set_Value(PropValue);
MyProperty2 := InParam.Properties_.Add('CurrentDirectory', wbemCimtypeString, False, 0);
PropValue := varNull;
myproperty2.Set_Value(propvalue);
MyProperty3 := InParam.Properties_.Add('ProcessStartupInformation', wbemCimtypeObject, False, 0);
PropValue := objConf;
myproperty3.Set_Value(propvalue);
OutParam:= Process.ExecMethod_('Create', InParam, 0, nil);
не работает. говорит что не удалось запустить. |
|
18-02-2008 03:54dim
Попробуй в свойствах сервиса WMI поставить галочку "разрешить взаимодействие с рабочим столом". Как по-другому сейчас сказать не могу. |
|
18-02-2008 02:29пробовал запустить удаленно процесс. он запускается, но он sw_hide. (мне так кажеться)
пробовал запустить через Win32_ProcessStartup
Const SW_NORMAL = 1
strComputer = "."
strCommand = "Notepad.exe"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
' Configure the Notepad process to show a window
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL
' Create Notepad process
Set objProcess = objWMIService.Get("Win32_Process")
intReturn = objProcess.Create _
(strCommand, Null, objConfig, intProcessID)
что-то в этом духе, но не получается
подскажите, кто знает как реализовать чтобы окно нормально показывало |
|
11-10-2007 12:56Не удаётся получить данные по нужным классам (win32_voltageprobe, win32_fan, win32_temperatureprobe) выдаёт такую же ошибку как и в статье, и нет на это ответов (система ХР, win98). Может кто-нибудь нашёл как с этим справиться? Пробовал программировать под win98 с DELPHI 7 работает без проблем, всего понадобилось установить лишь wmicore, экспортировать wmiscripting и всё, проц всего лишь AMD K6-3D 260Mhz. Скачал платформу WMI SDK весом в 400 метров (качал обычным модемом по телефонной линии), и был разочарован в её безполезности, кроме документации не нашёл ни чего полезного, нет там и CIM Studio, которая оказалась в wmitools весом всего в 4 метра. |
|
03-08-2007 06:23Спасибо за статью!
>некорректно работает с памятью
>попробуй вставить эти строки в всою программу - уверяю что памяти >больше чем на 3 часа работы не хватит.
>while true do
> while (Enum.Next(1, TempObj, Value) = S_OK) do
> begin
> end;
В Next() нельзя передавать непустой объект, т.к. он перезаписывается и не вызывает _Release().
TempObj:=null;
while true do
while (Enum.Next(1, TempObj, Value) = S_OK) do
begin
...
TempObj:=null;
end;
|
|
19-06-2007 15:14Доброе время суток! У кого нибудь программа под win XP пошла? Если да то скиньте плиз рабочий вариант!!! очень надо!
|
|
04-10-2006 02:01Разбирался с примером и нашёл ошибку. Достаточно серъёзную, из-за которой нельзя получить например IP адрес.
переделал для этого фрагмент
wbemCimtypeString, wbemCimtypeUint64:
if VarIsArray(SProp.Get_Value) then
begin
Count := VarArrayHighBound(SProp.Get_Value, 1);
if Count > 0 then
for i := 1 to Count do
StrValue:= StrValue + ' ' + SProp.Get_Value[Count]
else
if Count = 0 then
StrValue := SProp.Get_Value[0];
end
..................................................
было добавлено
if Count = 0 then
StrValue := SProp.Get_Value[0];
потому что иначе вместо айпишника возвращалась пустая строка...
|
|
18-09-2006 01:06
15-09-2006 01:40
15-09-2006 01:12Не могу скачать проложенные файлы
может у кого есть поделитесь |
|
08-06-2006 07:59Здраствуйте !! отличная статья!! блогадаря ей написал программу для диплома!! только вот проблема после установки в приказнам порядке .NET Framework 2.0 библиотека Microsoft WMI Scripting v1.1 Library заменена была на Microsoft WMI Scripting v1.2 Library после етого удаленное подключение к ПК в сети невозможно, ругается что "нет доступа", на msdn про разницу в библиотеках ни чего не нашел хотя мог подвести плохой уровень английского, может что посоветуете ?????Заранее благодарен!!! Сообщение не подписано |
|
09-08-2005 06:55SDK можно скачать с сайта майкрософт но его размер 395 мегабайт есть канешно и разбитые архивы по 25 метров! |
|
20-06-2005 01:59Не могу скачать архив исходника выложенный на сайте, точнее скачивается, но пишет - архив поврежден. Если у кого есть нормальный (распаковывающийся) архив киньте плиз на мыло andreybc@yandex.ru |
|
12-06-2005 16:30Народ, у меня как и у людей что отпостились первыми выводит что не найден драйвер или требуемое устройство при определении температура. Хотелось бы узнать может ктото сталкивался и решил эту проблему. Буду оочень признателен за ответ на мыло. А еще признательнее буду если это кодом подкреплено будет! =) |
|
19-04-2005 07:02Люди! Все говорят о прекрасных вещах. Но я так и не нашел главного - ответа : где взять WMI SDK для 2000\XP\2003??? Я общарил всеь инет ни где закачать немогу. На Microsoft только версия для NT4. Но без него фиг че сам напрограммишь. Может кто знает киньте ссылку пожалуста. |
|
09-03-2005 02:54To <nekto>:
Попробовал еще раз закачать WMI по указанным ссылкам (http://download.microsoft.com/download/platformsdk/wmicore/1.5/W9XNT4/EN-US/wmicore.EXE и http://download.microsoft.com/download/.NetStandardServer/Install/V1.1/NT5XP/EN-US/WMITools.exe). После закачки заново установил WMI Tools. При попытке установить WMI Core появляется следующее сообщение: "This version of WMI Core Components is only supported on Windows NT 4.0 Service Pack 4 or later versions of Windows NT 4. <OK>"
Все эти манипуляции проводил на WinXP SP2, установлен Deplhi 7...
Запускаю программу для измерения температуры и скорости вращения и снова получаю сообщение, что "Отсутствует провайдер или требуемое устройство".
Хотя в моем системнике температура процессора абсолютно точно можно измерить (хотя бы с помощью Everest Home Edition). Следовательно, действительно, отсутствует провайдер.
Если кто-то сталкивался с такой проблемой, пожалуйста, поделитесь опытом. Как бороться с отсутствующим провайдером? Можно же как-то измерить эту температуру... |
|
27-02-2005 08:34
15-02-2005 09:31Даже не знаю, что ей не нравится - пишет "Отсутствует провайдер или требуемое устройство"
Вот так вот.
-------------------------------------
С уважением и наилучшими пожеланиями,
Юрий В. Воробьев / Yuriy V. Vorobev |
|
13-02-2005 11:12А почему не работает программа определения скорости вентилятора ? |
|
02-02-2005 05:52Добрый день!
Искал какой-нибудь материал, с помощью которого можно узнать температуру процессора. Нашел эту статью, статья очень хорошая.
Но у меня возникла небольшая проблемка. Имею:
WinXP SP2, Deplhi 7. Распаковал архив wmi.zip, выполнил импорт библиотек
Active DS Type Library (Version 1.0) и
Microsoft WMI Scripting V1.2 Library (Version 1.2).
Затем открываю проект FanAndTemp.dpr, запускаю его на выполнение, нажимаю на кнопку "Получить свойства класса Win32_TemperatureProbe" и у меня выпригивает окошко - Отсутствует провайдер или требуемое устройство.
Скажите, пожалуйста, неужели у меня никак не удастся причитать температуру процессорв?
Заранее благодарен!
-------------------------------------
С уважением и наилучшими пожеланиями,
Юрий В. Воробьев / Yuriy V. Vorobev |
|
21-01-2005 06:44Все здорово на самом деле!
Но есть проблема.
При использовании ConnectServer соединения не обрываются между компами. Т.е. подсоединился к 10 компьютерам - висят 10 сетевых соединений.
Пока не выгрузишь ехе-шник...
Это как-то лечится? |
|
13-01-2005 14:56Не я все понимаю(интерфейсы, ком, куча типов, обявлений и все такое), но пример с запуском нотепада меня добил( поэтому пишу ), вот уж где стоит вспомнить про варианты:
-- Запуск процесса на удаленном компьютере (или локальном).--
function RunNotepad( host : string='localhost' ):variant;
var process,processid:variant;
begin
process:=GetObject('winmgmts:{impersonationLevel=impersonate}!//'+host+'/root/cimv2:Win32_Process');
process.Create('notepad.exe',,,processid);
end;
GetObject - это то же что и в бэйсике, на дельфи ее реализация довольно проста:
uses activeX , ComConst , comobj;
const STGM_default =STGM_READWRITE + STGM_SHARE_EXCLUSIVE;
STGM_BASE =STGM_READ + STGM_SHARE_EXCLUSIVE;
function getobject(const name:string;accs:dword=STGM_default):variant;
var err:HResult;
bo:tBINDOPTS;
res:IDispatch;
nm:widestring;
begin nm := name; fillchar(bo,sizeof(bo),0);
with bo do begin cbStruct := sizeof(bo);
grfFlags := BIND_MAYBOTHERUSER;
grfMode := accs;
end;
err:=CoGetObject( @nm[1] , @bo , IDispatch , @res );
OleCheck(err);
result:=res;
end;
Такой getobject нужен не зависимо от того используете вы WMI или нет, странно почему его не было в дельфовой поставке
Сообщение не подписано |
|
29-11-2004 12:57
09-11-2004 13:15
06-11-2004 14:56
06-11-2004 14:43дайте сцылку на рабочий WMISDK.EXE!!!
PS
Не повторяйте мою ошибку -
скачал WMISDKALPHA.EXE с microsoft.com ( 9.6 мегов) - не запускается на Win2000. Абыдно, да( |
|
05-09-2004 00:27
17-07-2004 10:08
25-03-2004 14:58to aws
Ну дык шуршать он может и сейчас, на всех win5 и больше уже есть WMI, но для того чтобы ты смог сам программировать нужен ещё и WMI SDK.
to ALL
Так что за фигня температурой проца то? |
|
02-03-2004 12:22AP>Если кого-то это заинтересует, то можно попробовать развить эту тему с вашей помощью.
Интересно.Даже очень. |
|
02-03-2004 12:18Alexey Pavlov
>>Действительно, не все WMI-классы "работают" как >>хотелось бы. Было бы неплохо получить >>своеобразный feedback по использованию WMI.
Потдерживаю....прикольно бы организавать ветку в форуме где нибудь |
|
27-02-2004 14:26С проблемой модемов разобрался.
Но возникла еще одна проблема: когда получаю свойства принтера (Win32_Printer), то почему-то у моего сетевого принтера Network = false.
Как это обьяснить?
|
|
27-02-2004 12:26Юзаю Win32_POTSModem.
Когда в системе есть модем, то все нормально, но когда его нет, то эта строка:
PropSet := SObject.Properties_;
выдает ощибку.
Как быть в такой ситуации? Как предусмотреть? |
|
04-02-2004 11:48Действительно, не все WMI-классы "работают" как хотелось бы. Было бы неплохо получить своеобразный feedback по использованию WMI. Можно было бы общими усилиями свести все положительные и отрицательные результаты в отдельную обзорную статью, к которой бы прилагались примеры и описания конфигураций (Hard/Soft) на которых данные примеры тестировались. Исходники примеров можно посылать мне (без exe-ов plz ;)
Если кого-то это заинтересует, то можно попробовать развить эту тему с вашей помощью. |
|
02-02-2004 13:44Всё разобрался =)...Извиняюсь |
|
30-01-2004 17:23Проблема с ConnectToServer (Локатор) при использовании внутри потока(динам. создание).
А статья супер....в инете единственная нормальная.
Для старта изучения WMI - лутшая
|
|
19-01-2004 18:41а можно этот архивчик еще где-то взять? а то у меня rar говорит, что архив поврежден и отказывается его разархивировывать. Сообщение не подписано |
|
06-12-2003 19:15как определить какой на компьютере биос? |
|
27-10-2003 06:56Извиняюсь что не подписался,
исправляюсь. |
|
27-10-2003 06:55Привет
В этих классах, все нужные мне свойства
ксающиеся ID равны хххххххххх либо Empty
Может это реакция на WinXP + SP1 + Asus P4PE i845PE
может есть другой способ?Сообщение не подписано |
|
24-10-2003 17:50to ssv55
нашел кое-что: класс Win32_BaseBoard имеет интересные свойства - например
Manufacturer, Product, SerialNumber, Version
|
|
23-10-2003 12:37To ssv55.
Между прочим, не у каждой "матери" есть ID. С этим я столкнулся когда исследовал эту проблему еще на Win98 с помощью SiSoft Sandra. Может быть тебя "спасут" свойства Manufacturer и Model класса Win32_ComputerSystem? |
|
22-10-2003 09:57Все, импортировал, я не там смотрел,
я лазил в Components - Install ActiveX Control.
В общем разобрался, (все работает:-)но то что искал там попросту нет.
А нужно что то тпа "ID системной платы", "SN Motherdoard"
Может кто сталкивался с такой задачей ?
Допустим прога Aida32 успешно справляется с этой задачей!
Не обязательно инструментами WMI.
Нужно, больше чем очень. |
|
21-10-2003 13:26To ssv555.
Не знаю, где ты смотришь?
В WinXP D7 -> меню project -> Import Type Library есть обе строки после инсталляции WMI Tools. Только во второй библиотеке версия уже 1.2.
To Anatol.
Панель управления -> Установка и удаление программ -> WMI Tools. |
|
20-10-2003 12:12Очень интересная тема, вот только как уже было упомянуто
в ХР не видать данных компонент после инсталляции WMISDK:
Active DS Type Library (Version 1.0)
Microsoft WMI Scripting v1.1 Library (Version 1.1)
Если кто разобрался, найдите плиз время, намыльте. |
|
16-09-2003 11:10некорректно работает с памятью
попробуй вставить эти строки в всою программу - уверяю что памяти больше чем на 3 часа работы не хватит.
while true do
while (Enum.Next(1, TempObj, Value) = S_OK) do
begin
end;
|
|
15-09-2003 11:36Неплохая вещь WMI. Только с софтом проблемки. Не могу найти список установленного софта(т.е. того, который выводится на экран при нажатии кнопки Add/Remove programs). Может кто нашел как увидеть его??? |
|
22-06-2003 02:10Всё замечательно работает.
Только далеко не со всеми классами WMI.
Например, если Win32_Processor, Win32_VideoController не вызывает ошибок, то классы Win32_DiskDrive, Win32_BaseBoard, Win32_DiskDrive при запуске приложения вызывают ошибку Access Violation at...
Уважаемый Алексей!
Не могли вы рассказать, как использовать,например, класс Win32_BaseBoard (информация о материнке) также подробно как вы расписали Win32_Processor?
Заранее благодарен. |
|
12-05-2003 21:02Д.Д.
Прочитал статью все хорошо и понятно. Но вот не задача Microsoft переделал свой сайт, но WMI SDK я все таки нашел. Поставил и неувидел в Delph-ях нужных библиотек. Подскажите как быть. (Желательно поподробнее) |
|
25-04-2003 07:52Интерестно нет того же самого (примеров) на VC++6 |
|
24-04-2003 22:50А ссылочки к файлам можно? plz |
|
13-03-2003 12:33Имеем WinXP Pro + D5.
Также имеем:
WMITools.exe
WMISDK.exe
WMICore.exe.
Как то не дружат эти ехе-шники друг с другом.
Внесите ясность если можно, что за чем ставить и для каких целей.
Серфинг по МСДН четкого ответа не дал на это.
|
|
12-01-2003 18:48Все замечательно , только Microsoft переделало свой сайт и по указанным линкам уже нет WMI SDK :(
по поиску нашел только WMI Tools . после установки которого не наблюдается указанных в статье библиотек :(
если возможно , то укажите действующий линк на WMI SDK |
|
24-12-2002 10:11А можно узнать какие имена у библиотек
Active DS Type Library (Version 1.0)
Microsoft WMI Scripting v1.1 Library (Version 1.1)?
|
|
30-10-2002 00:23Да, весьма любопытно!
Выключать комп с помощью SQL - кхм... Оригинально!Сообщение не подписано |
|
25-10-2002 13:17>> 10/25/2002 6:36:10 AM:
Похоже я немного нечётко объяснил в статье некоторые детали, связанные с использованием WMI.
Для того, что бы прогармма, использующая WMI, работала - вовсе не надо устанавливать на машину SDK, т.к. WMI изначально "встроена" в семейство Win2k и присутствует в SP4 для WinNT.
Но для разработки самих программ Вам придётся установить SDK, что бы воспользоваться соответствующими библиотеками типов. |
|
25-10-2002 06:36Замечательная статья, как бы хорошо было ей воспользоваться при защите щаровары, но хорошо бы было получить доступ к системной информации без установки WMI SDK, т.к. это лишь оболочка к существующим сервисам.
Лично мне что то не хочется ставить WMI SDK, что бы какой нибудь Java скрипт у меня не начал шуршать без моего ведома из какой нибудь HTML, вытрясывая всю инф-ю из моей машины.
Но к статье это не относится :)
Статья замечательная!!! |
|
24-10-2002 16:31
|
|