Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 3760 - Тест на работу WMI моникеров   Make a simular bug
Summary: Тест на работу WMI моникеров
Status: DEFERRED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: OLE / DDE / RPC (show other bugs)
Version: 1.0.10
Hardware: PC All
: P4 minor
Target Milestone: ---
Assignee: BUGS@Etersoft
QA Contact:
URL: http://www.script-coding.info/WMI_Pro...
Whiteboard:
Keywords:
Depends on:
Blocks: 3761
  Show dependency treegraph
 
In work:
Reported: 2009-04-01 11:26 MSD by Константин Кондратюк
Modified: 2012-01-18 02:52 MSK (History)
2 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Константин Кондратюк 2009-04-01 11:26:47 MSD
Нужен тест на создание моникеров в Windows и wine.

intuit.ru:
Формат строки WMI-моникера похож на стандартный путь к объектам WMI. При этом моникеры могут состоять из трех частей:

    * обязательный префикс "WinMgmts:";
    * необязательные параметры, определяющие настройки безопасности при работе с WMI ;
    * необязательный путь к нужному объекту WMI.
Comment 1 Константин Кондратюк 2009-04-01 11:29:09 MSD
Страница, посвящённая vbs-сценариям для работы с WMI:
http://www.script-coding.info/WMI_Processes.html

Простой сценарий, запускающий блокнот. Работает на win2k3, в wine возвращает ошибку из-за невозможности создать моникер.

On Error Resume Next
Set objClass = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2:Win32_Process")
If Err.Number <> 0 Then
	WScript.Echo Err.Number & ": " & Err.Description
	WScript.Quit
End If
Res = objClass.Create("notepad.exe", Null, Null, PID)
If Res <> 0 Then
	WScript.Echo "Код ошибки: " & Res
End If
Comment 2 Константин Кондратюк 2009-04-01 11:32:01 MSD
Из трейса по +ole:

trace:ole:MkParseDisplayName (0x133ad0, L"winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\CIMV2:Win32_Process", 0x32ee
dc, 0x32eee8)
warn:ole:CLSIDFromProgID couldn't open key for ProgID L"winmgmts"

В коде:
    strcpyW( buf, progid );
    strcatW( buf, clsidW );
    if (RegOpenKeyW(HKEY_CLASSES_ROOT,buf,&xhkey))
    {
        HeapFree(GetProcessHeap(),0,buf);
        WARN("couldn't open key for ProgID %s\n", debugstr_w(progid));
        return CO_E_CLASSSTRING;
    }
Comment 3 Константин Кондратюк 2009-04-01 11:33:27 MSD
Связь WMI-моникера "WinMgmts:" с библиотекой поддержки сценариев WMI осуществляется с помощью раздела HKEY_CLASSES_ROOT\WINMGMTS, в подразделе CLSID которого записан идентификатор, указывающий, в свою очередь, на раздел HKEY_CLASSES_ROOT\CLSID\{172BDDF8-CEEA-11D1-8B05-00600806D9B6}. Раздел же HKEY_CLASSES_ROOT\CLSID\{172BDDF8-CEEA-11D1-8B05-00600806D9B6} содержит подраздел InProcserver32, значением которого по умолчанию является полный путь к файлу wbemdisp.dll, содержащему библиотеку поддержки сценариев WMI и реализующему объект SWbemServices.

http://www.intuit.ru/department/os/compromtwin/12/2.html
Comment 4 Константин Кондратюк 2009-04-01 11:37:14 MSD
Указанные разделы в реестре отсутствуют. Объект WinMgmts не может быть создан, что подтверждается тестом.
Comment 5 Константин Кондратюк 2009-04-01 14:01:41 MSD
После добавления записей в реестр появилась необходимость в реализации IParseDisplayName.

Добавил сам интерфейс и возможность его получения через IClassFactory_QueryInterface.
Теперь тест вызывает метод ParseDisplayName у полученного интерфейса. Видимо, нужно реализовывать.

http://msdn.microsoft.com/en-us/library/ms692594(VS.85).aspx
Comment 6 Константин Кондратюк 2009-04-01 18:22:46 MSD
IParseDisplayName работает, IMoniker создаётся (ещё появился IMoniker).
Теперь очередь за реализацией метода IMoniker::BindToObject
Comment 7 Константин Кондратюк 2009-04-01 18:23:59 MSD
#6 не в ту багу :)
Comment 8 Константин Кондратюк 2009-04-01 18:25:24 MSD
Тест сократил до вида

On Error Resume Next
Set objClass =
GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
        WScript.Echo Err.Number & ": " & Err.Description
        WScript.Quit
End If

Пока хватает для того, чтобы поведение совпадало с 1С
Comment 9 Vitaly Lipatov 2012-01-18 02:49:15 MSK
Больше не поручаем заданий bugs@.
Comment 10 Vitaly Lipatov 2012-01-18 02:52:49 MSK
Больше не поручаем заданий bugs@.