Программист
33 / 33 / 8
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1

WMI, не работает IWbemLocator::ConnectServer

28.05.2014, 19:01. Показов 6630. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь воспользоваться возможностями WMI для работы с удаленными компьютерами по гайду msdn.
Тк я работаю из Qt, то первые два пункта у меня должны выполняться автоматически, поэтому я начинаю сразу с третьего пункта примера (в моем коде он обозначен как Step 1). Третий пункт отрабатывает успешно, а вот на 4м пункте (в моем коде step 2) мне возвращается недокументированный код ошибки -7ff8fffb. У самого опыта не хватает разобраться, гугление не помогает, я в тупике.(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
    // Step 1
    // Obtain the initial locator to WMI
    auto check_CoCreateInstance = [](const HRESULT &result) -> bool
    {
        bool retval = true;
        switch (result)
        {
        case S_OK:
            qDebug() << "S_OK";
            retval = false;
            break;
        case REGDB_E_CLASSNOTREG:
            qDebug() << "REGDB_E_CLASSNOTREG";
            break;
        case CLASS_E_NOAGGREGATION:
            qDebug() << "CLASS_E_NOAGGREGATION";
            break;
        case E_NOINTERFACE:
            qDebug() << "E_NOINTERFACE";
            break;
        case E_POINTER:
            qDebug() << "E_POINTER";
            break;
        default:
            qDebug() << "unknow error";
            qDebug() << "Failed to create IWbemLocator object."
                 << "Err code = 0x" << hex << result << endl;
        }
 
        return retval;
    };
 
    IWbemLocator *pLoc = NULL;
    HRESULT hres = CoCreateInstance(
                CLSID_WbemLocator,
                NULL,
                CLSCTX_INPROC_SERVER,
                IID_IWbemLocator,
                (LPVOID*) &pLoc);
 
    if (check_CoCreateInstance(hres) || FAILED(hres))
    {
        qDebug() << "Step 1 is faild";
        return;
    }
    else
    {
        qDebug() << "Step 1 is successful";
    }
 
    // Step 2: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method
    // Connect to the remote root\cimv2 namespace
    // and obtain pointer pSvc to make IWbemServices calls.
    //--------------------------------------------------------------
    auto check_ConnectServer = [](const HRESULT &result) -> bool
    {
        bool retval = true;
 
        switch(result)
        {
        case (WBEM_E_ACCESS_DENIED):
            qDebug() << "WBEM_E_ACCESS_DENIED";
            break;
        case (WBEM_E_FAILED):
            qDebug() << "WBEM_E_FAILED";
            break;
        case (WBEM_E_INVALID_NAMESPACE):
            qDebug() << "WBEM_E_INVALID_NAMESPACE";
            break;
        case (WBEM_E_INVALID_PARAMETER):
            qDebug() << "WBEM_E_INVALID_PARAMETER";
            break;
        case (WBEM_E_OUT_OF_MEMORY):
            qDebug() << "WBEM_E_OUT_OF_MEMORY";
            break;
        case (WBEM_E_TRANSPORT_FAILURE):
            qDebug() << "WBEM_E_TRANSPORT_FAILURE";
            break;
        case (WBEM_E_LOCAL_CREDENTIALS):
            qDebug() << "WBEM_E_LOCAL_CREDENTIALS";
            break;
        case (WBEM_S_NO_ERROR):
            qDebug() << "WBEM_S_NO_ERROR";
            retval = false;
            break;
        default:
            qDebug() << "unknow error";
            qDebug() << "Could not connect."
                 << "Err code = 0x" << hex << result << endl;
 
        }
 
        return retval;
    };
 
    IWbemServices *pSvc = NULL;
 
    QString NetResource = "\\\\" + compname + "\\root\\cimv2";
    QString User = compname + "\\Admin";
    QString Pass = "Test";
 
    qDebug() << NetResource;
    qDebug() << User;
    qDebug() << Pass;//*/
 
    hres = pLoc->ConnectServer(
                _bstr_t(NetResource.toStdString().c_str()), // Remote namespace
                _bstr_t(User.toStdString().c_str()),        // User name
                _bstr_t(Pass.toStdString().c_str()),        // User password
                NULL,                                       // Locale
                NULL,                                       // Security flags
                NULL,                                       // Authority
                NULL,                                       // Context object
                &pSvc                                       // IWbemServ proxy
                );
 
    if (check_ConnectServer(hres) || FAILED(hres) || pSvc == NULL)
    {
        qDebug() << "Step 2 is faild";
        pLoc->Release();
        return;
    }
    else
    {
        qDebug() << "Step 2 is successful";
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2014, 19:01
Ответы с готовыми решениями:

Служба для SWBemlocator.ConnectServer
какую службу надо включить для того чтобы выполнялось вот это: SWBemlocator.ConnectServer(strComputer, &quot;\root\CIMV2&quot;) у меня эта...

[C#+WMI]Можно ли через WMI узнать температуру процессора и ядер?
Можно ли через WMI узнать температуру процессора и ядер? Щас лопачу сайты вожусь но русскоязычной документации по WMI нету :( А тем...

WMI timeout не работает
Всем привет! ManagementScope scope = new ManagementScope(&quot;\\\&quot; + hostName + &quot;\\root\\cimv2&quot;); scope.Options.Timeout =...

1
73 / 69 / 38
Регистрация: 09.10.2012
Сообщений: 238
04.08.2014, 21:33
-7ff8fffb = -2147024891 = 0x80070005

Ошибка всё-таки документированная, на msdn смотрим
0x8007xxxx Errors originating in the core operating system. WMI may return this type of error because of an external failure, for example, DCOM security failure.
Ну а 5 - ACCESS_DENIED

Надо смотреть, что у вас с правами на выполнение этого кода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2014, 21:33
Помогаю со студенческими работами здесь

Поставщик HiPerfCooker_v1 зарегистрирован в пространстве имен WMI Root\WMI с правами локальной системы
Поставщик HiPerfCooker_v1 зарегистрирован в пространстве имен WMI Root\WMI с правами локальной системы. Это может привести к нарушениям...

Не работает WMI.Как правильно сделать??
Здравствуйте, мне нужно получить в переменные loadsring1 и loadstring2 информацию о разрядности установленной ОС и о пути к системной...

Не работает WMI - ссылка на объект не указывает на экземпляр объекта
Вот код,взят из MSDN с небольшими &quot;доработками&quot;: #pragma endregion private: System::Void button1_Click(System::Object^ sender,...

wmi
модель процессора: производителя, название и тип, количество процессоров, его тактовую частоту, а так же версию BIOS и производителя...

wmi
для того чтобы использовать wmi на delphi надо устанавливать какие либо программы? Или можно просто все время кодом писать? Я читал что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru