Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562

Как узнать версию windows и модели видеокарты и саундкарты?

02.11.2014, 17:36. Показов 7630. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как узнать версию windows и модели видеократы и саундкарты? MinGW, code blocks.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2014, 17:36
Ответы с готовыми решениями:

Как узнать версию gcc (или g++)?
прогаю на C::B. Нужно понять, что ставить в поле языка для загрузки проги на сайт. там дофига вариантов g++ и gcc, как понять, что нужно...

Как узнать версию драйвера не запуская Windows?
Всем привет. Есть HDD, на нем стоит windows 7, но ее запустить никак нельзя (совсем никак, ни в безопасном, ни в обычном режиме), но есть...

Как узнать версию windows, если с неё нельзя загрузиться?
Могу только как внешний диск подключить, а при загрузке вылетает синий экран с кодом 7b? безопасные режим ,устранение неполадок не...

37
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 14:46
Про MinGW не знаю, в VS через WMI можно узнать, правда там не всегда детально, у меня, например, сообщает про звук просто VIA High Defenition Audio, без обозначения микросхемы.
Также версию ОС и название видеоадаптера через GetVersionEx() и EnumDisplayDevices() можно узнать.
Вот через функции и через WMI по примеру из MSDN:
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
#define _WIN32_DCOM
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
 
using namespace std;
 
#include <comdef.h>
#include <Wbemidl.h>
#include <windows.h>
 
 
# pragma comment(lib, "wbemuuid.lib")
 
int _tmain(int argc, _TCHAR* argv[])
{
    wcout.imbue(locale("rus_rus.866"));
 
    DISPLAY_DEVICEW dd;
    OSVERSIONINFOEXW osv;
 
    osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW);
    GetVersionExW((LPOSVERSIONINFO)&osv);
 
    wcout << L"version: " << osv.dwMajorVersion << L"." << osv.dwMinorVersion << endl;
 
    dd.cb = sizeof(DISPLAY_DEVICEW);
    EnumDisplayDevicesW(NULL, 0, &dd, EDD_GET_DEVICE_INTERFACE_NAME);
 
    wcout << L"video: " << dd.DeviceString << endl;
 
//=================================================================================================
 
    HRESULT hres;
 
    // Step 1: --------------------------------------------------
    // Initialize COM. ------------------------------------------
 
    hres =  CoInitializeEx(0, COINIT_MULTITHREADED); 
    if (FAILED(hres))
    {
        wcout << L"Failed to initialize COM library. Error code = 0x" 
            << hex << hres << endl;
        return 1;                  // Program has failed.
    }
 
    // Step 2: --------------------------------------------------
    // Set general COM security levels --------------------------
 
    hres =  CoInitializeSecurity(
        NULL, 
        -1,                          // COM authentication
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication 
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation  
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities 
        NULL                         // Reserved
        );
 
                      
    if (FAILED(hres))
    {
        wcout << L"Failed to initialize security. Error code = 0x" 
            << hex << hres << endl;
        CoUninitialize();
        return 1;                    // Program has failed.
    }
    
    // Step 3: ---------------------------------------------------
    // Obtain the initial locator to WMI -------------------------
 
    IWbemLocator *pLoc = NULL;
 
    hres = CoCreateInstance(
        CLSID_WbemLocator,             
        0, 
        CLSCTX_INPROC_SERVER, 
        IID_IWbemLocator, (LPVOID *) &pLoc);
 
    if (FAILED(hres))
    {
        wcout << L"Failed to create IWbemLocator object."
            << L" Err code = 0x"
            << hex << hres << endl;
        CoUninitialize();
        return 1;                 // Program has failed.
    }
 
    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method
 
    IWbemServices *pSvc = NULL;
 
    // Connect to the root\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    hres = pLoc->ConnectServer(
         _bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
         NULL,                    // User name. NULL = current user
         NULL,                    // User password. NULL = current
         0,                       // Locale. NULL indicates current
         NULL,                    // Security flags.
         0,                       // Authority (for example, Kerberos)
         0,                       // Context object 
         &pSvc                    // pointer to IWbemServices proxy
         );
    
    if (FAILED(hres))
    {
        wcout << L"Could not connect. Error code = 0x" 
             << hex << hres << endl;
        pLoc->Release();     
        CoUninitialize();
        return 1;                // Program has failed.
    }
 
    wcout << L"Connected to ROOT\\CIMV2 WMI namespace" << endl;
 
 
    // Step 5: --------------------------------------------------
    // Set security levels on the proxy -------------------------
 
    hres = CoSetProxyBlanket(
       pSvc,                        // Indicates the proxy to set
       RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
       RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
       NULL,                        // Server principal name 
       RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx 
       RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
       NULL,                        // client identity
       EOAC_NONE                    // proxy capabilities 
    );
 
    if (FAILED(hres))
    {
        wcout << L"Could not set proxy blanket. Error code = 0x" 
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();     
        CoUninitialize();
        return 1;               // Program has failed.
    }
 
    // Step 6: --------------------------------------------------
    // Use the IWbemServices pointer to make requests of WMI ----
 
// ОС и версия
//=================================================================================================
    IEnumWbemClassObject* pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        bstr_t("WQL"), 
        bstr_t("SELECT * FROM Win32_OperatingSystem"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
        NULL,
        &pEnumerator);
    
    if (FAILED(hres))
    {
        wcout << L"Query for operating system name failed."
            << L" Error code = 0x" 
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1;               // Program has failed.
    }
 
    // Step 7: -------------------------------------------------
    // Get the data from the query in step 6 -------------------
 
    IWbemClassObject *pclsObj;
    ULONG uReturn = 0;
   
    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
            &pclsObj, &uReturn);
 
        if(0 == uReturn)
        {
            break;
        }
 
        VARIANT vtProp;
 
        // Get the value of the Name property
        hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
        wcout << L"ОС : " << vtProp.bstrVal << endl;
        VariantClear(&vtProp);
        hr = pclsObj->Get(L"Version", 0, &vtProp, 0, 0);
        wcout << L"Версия ОС : " << vtProp.bstrVal << endl;
        VariantClear(&vtProp);
 
        pclsObj->Release();
    }
// Звук
//=================================================================================================
    pEnumerator->Release();
    pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        bstr_t("WQL"), 
        bstr_t("SELECT * FROM Win32_SoundDevice"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
        NULL,
        &pEnumerator);
    
    if (FAILED(hres))
    {
        wcout << L"Query for sound card name failed."
            << L" Error code = 0x" 
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1;               // Program has failed.
    }
    uReturn = 0;
    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
            &pclsObj, &uReturn);
 
        if(0 == uReturn)
        {
            break;
        }
 
        VARIANT vtProp;
 
        // Get the value of the Name property
        hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
        wcout << L"Звук : " << vtProp.bstrVal << endl;
        VariantClear(&vtProp);
 
        pclsObj->Release();
    }
//Видео
//=================================================================================================
    pEnumerator->Release();
    pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        bstr_t("WQL"), 
        bstr_t("SELECT * FROM Win32_VideoController"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, 
        NULL,
        &pEnumerator);
    
    if (FAILED(hres))
    {
        wcout << L"Query for sound card name failed."
            << L" Error code = 0x" 
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1;               // Program has failed.
    }
    uReturn = 0;
    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1, 
            &pclsObj, &uReturn);
 
        if(0 == uReturn)
        {
            break;
        }
 
        VARIANT vtProp;
 
        // Get the value of the Name property
        hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
        wcout << L"Видео : " << vtProp.bstrVal << endl;
        VariantClear(&vtProp);
 
        pclsObj->Release();
    }
 
 
    // Cleanup
    // ========
    
    pSvc->Release();
    pLoc->Release();
    pEnumerator->Release();
    if(!pclsObj) pclsObj->Release();
    CoUninitialize();
 
    wcout << endl;
    system("pause");
    return 0;
}
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 14:54  [ТС]
fatal error: Wbemidl.h: No such file or directory|
..........

Добавлено через 1 минуту
fatal error: comdef.h: No such file or directory|
......................

Добавлено через 35 секунд
Цитата Сообщение от nmcf Посмотреть сообщение
#include "stdafx.h"
Это что за файл?

Добавлено через 4 минуты
C++
1
error: 'EDD_GET_DEVICE_INTERFACE_NAME' was not declared in this scope|
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 15:00
stdafx можешь убрать и _tmain() заменить на обычный main(). А вот про comdef.h не знаю. В Visual Studio он есть.
EnumDisplayDevices() и GetVersion() будут работать и без comdef.h.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 15:44  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
numDisplayDevices() ... будут работать и без comdef.h.
Не работает.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 15:46
Покажи программу.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.11.2014, 15:58
Цитата Сообщение от taras atavin Посмотреть сообщение
Как узнать версию windows
GetVersionEx function
http://msdn.microsoft.com/en-u... 85%29.aspx

Правда, это не всегда надежно.
Например, если приложение запущено в режиме совместимости, или в манифесте
нет соответствующей записи в блоке "compatibility" (Windows 8 и выше),
функция GetVersionEx будет возвращать неправильные цифры.
Альтернативный вариант: загрузить какую-нибудь известную системную dll,
например ntdll.dll, и вытащить номер версии Windows из нее.

Цитата Сообщение от taras atavin Посмотреть сообщение
модели видеократы и саундкарты
Через Setup API можно узнать все, что отображается в диспетчере устройств.
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 16:06  [ТС]
Что за Setup API?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.11.2014, 16:15
Набор функций для работы с устройствами и драйверами, их
установкой-удалением, получением свойств и т.д.

SetupAPI Reference
http://msdn.microsoft.com/en-u... 85%29.aspx

Обычно для получения какой-либо информации вызывается функция
SetupDiGetClassDevs с указанием нужного класса (к примеру, для
видеокарты это класс GUID_DEVCLASS_DISPLAY), ну и далее
SetupDiEnumDeviceInfo или SetupDiEnumDeviceInterfaces с перечислением
всех устройств данного типа, зарегистрированных в системе.
Свойства можно получать через SetupDiGetDeviceRegistryProperties и
другие SetupDiGet-функции.
2
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 16:25  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Покажи программу.
Зачем? Я процитировал сообщение о егоге.

Добавлено через 1 минуту
Цитата Сообщение от Убежденный Посмотреть сообщение
Набор функций для работы с устройствами и драйверами, их
установкой-удалением
И потом объяснять, что это не вирус?

Добавлено через 5 минут
Егог:
C:\Projects\SeaJackals\Editor\Sculptor\S culptor.cpp|288|error: 'GUID_DEVCLASS_DISPLAY' was not declared in this scope|
.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
03.11.2014, 17:24
Цитата Сообщение от taras atavin Посмотреть сообщение
Как узнать версию windows и модели видеократы и саундкарты?
Цитата Сообщение от taras atavin Посмотреть сообщение
И потом объяснять, что это не вирус?
Ну тогда никак.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 17:27
Зачем? Я процитировал сообщение о егоге.
Затем, что если ты про stdafx не знаешь, то надо смотреть, что ты там вообще наваял. Конкретно по запросу версии и видеоадаптеру - это до 33-й строки. Там windows.h должно хватать.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 17:29  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Затем, что если ты про stdafx не знаешь, то надо смотреть, что ты там вообще наваял.
Какая разница? Компилятор не знает конкретного идентификатора и что бы я, или ты ни наваял, прога даже не компилится.

Добавлено через 50 секунд
Цитата Сообщение от nmcf Посмотреть сообщение
Там windows.h должно хватать.
Тогда объясни мессагу.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.11.2014, 17:29
Цитата Сообщение от taras atavin Посмотреть сообщение
C:\Projects\SeaJackals\Editor\Sculptor\S culptor.cpp|288|error: 'GUID_DEVCLASS_DISPLAY' was not declared in this scope
C++
1
#include <devguid.h>
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 17:30
Какого идентификатора? Ты даже не говоришь, что взял из того огромного куска, который я разметил, а что выкинул.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 17:33  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Какого идентификатора?
Он написан в самой мессаге.
Цитата Сообщение от nmcf Посмотреть сообщение
Ты даже не говоришь, что взял из того огромного куска, который я разметил, а что выкинул.
А какая разница? Я мог написать только его и инклады, гога будет та же.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.11.2014, 17:40
А какая разница?
Вопросов не имею.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
03.11.2014, 17:43  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
C:\Projects\SeaJackals\Editor\Sculptor\S culptor.cpp|288|error: 'GUID_DEVCLASS_DISPLAY' was not declared in this scope
Код C++
1
#include <devguid.h>
Не помогает.
C:\Projects\SeaJackals\Editor\Sculptor\S culptor.cpp|289|error: 'SetupDiGetClassDevs' was not declared in this scope|
осталась.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.11.2014, 17:51
Visual Studio 2008 Pro SP1:
C++
1
2
3
4
5
6
7
8
9
10
#include <Windows.h>
#include <devguid.h>
 
 
 
int main()
{
    GUID const Guid = GUID_DEVCLASS_DISPLAY;
    return 0;
}
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
По поводу SetupDiGetClassDevs - надо подключить setupapi.h и
библиотеку импорта setupapi.lib.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
03.11.2014, 18:08
C++
1
2
3
4
5
6
7
8
9
#define INITGUID
#include <windows.h>
#include <devguid.h>
 
int main()
{
    GUID const Guid = GUID_DEVCLASS_DISPLAY;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2014, 18:08
Помогаю со студенческими работами здесь

Как правильно создать и использовать radiobutton? Можно ли из программы узнать версию Windows ?
Здравствуйте. Как правильно создать и использовать элементы radiobutton ? Если я просто создам несколько этих элементов функцией...

Узнать версию и редакцию не загружая windows по файлам на диске
Добрый день. Есть диск с установленной windows 7 home х86. Как узнать по файлам какая именно? basic или premium? oem или retail? Все...

Как узнать версию ОС?
У меня задача стоит, сделать проверку операционки, чтобы задействовать правильный участок скрипта для задания ДНС. Ведь, как известно, в ХР...

Как узнать версию ОС?
Здравствуйте, подскажите, как узнать версию операционной системы, тип и частоту процессора? (включая ОС 7/8)

Как узнать версию ISA?
извините за несовершенство вопроса но все же - как узнать версию ISA?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru