Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как снять характеристики с компа (http://forum.oszone.net/showthread.php?t=57865)

lehha 12-12-2005 11:12 382108

Как снять характеристики с компа
 
Всем привет!!!
Подскажите как лутше снять основные характеристики железа, а именно
объем HDD, ОЗУ, тип процессора его частоту, MAC адрес, видео карта. К примеру тип проца можно выдрать из реестра по ветке HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\
Информацию о вичестере можа узнать с помощью функций
GetVolumeInformation
GetDiskFreeSpace - или чемто подобным
Одним словом каким образм это можно узнать, как и где лутше это посмотреть в реестре или еще гдето.
Лутше кончечно это сделать с помощью апи функций.
Спаибо за рание.

lehha 12-12-2005 11:51 382138

Итак покопавшись в MSDN нашел следующее
Computer System Hardware Classes - классы отвечающие за комп-е железо
вот ссылка на их описалово (локальный MSDN 2003) ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/wmisdk/wmi/computer_system_hardware_classes.htm#_hmm_networking_device_classes
а вот ссылка в инете
Спасибо всем если у кого то будут еще предложения пишите.

hasherfrog 12-12-2005 11:51 382139

Что-то можно собрать так:
http://msdn.microsoft.com/library/de..._reference.asp

lehha 14-12-2005 16:19 383040

Если кого интересует как работают WMI классы вот пример кода который глядит имена cdrom - ов
Код:

#include "stdafx.h"
  #define _WIN32_DCOM
  #include <windows.h>
  #include <vector>
  #include <iostream>
  #include <comdef.h>
  #include <Wbemidl.h>
  #pragma comment( lib, "Wbemuuid.lib" )
    int _tmain(int argc, _TCHAR* argv[])
    {
          HRESULT hr;
        IWbemClassObject * pObject = NULL;       
        IWbemServices * pService = NULL;       
          IWbemLocator * pLocator = NULL;       
          IEnumWbemClassObject * pEnum = NULL;       
        CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
        CoInitializeSecurity(NULL, -1, NULL, NULL,         
        RPC_C_AUTHN_LEVEL_CONNECT,
        RPC_C_IMP_LEVEL_IMPERSONATE,
        NULL, EOAC_NONE, 0);
        hr = CoCreateInstance( CLSID_WbemLocator, 0, CLSCTX_ALL,
        IID_IWbemLocator, (void**) &pLocator);
        if (FAILED(hr))
        {
                  throw("Лажа не создано");         
                ::CoUninitialize();         
                return -1;
          }
          hr  = pLocator->ConnectServer( _bstr_t(L"root\\cimv2"),NULL,
                      NULL,NULL,NULL,NULL,NULL,&pService);         
        if (FAILED(hr))
          { 
                throw("Лажа нет конеткта");               
                  pLocator->Release();                 
                  ::CoUninitialize();                 
                  return -1;
          }         
        hr = pService->ExecQuery( _bstr_t(L"WQL"),
                                _bstr_t(L"SELECT * FROM Win32_CDROMDrive"),                 
                                  WBEM_FLAG_RETURN_IMMEDIATELY | 
                                  WBEM_FLAG_FORWARD_ONLY,
                                  0, &pEnum );
          if (FAILED(hr))
          {         
        throw("Лажа несработал запрос");         
        pService->Release();         
        pLocator->Release();         
        ::CoUninitialize();         
        return -1;
          } 
        ULONG uReturn = 0;
          while (pEnum)
          {         
        hr = pEnum->Next(WBEM_INFINITE, 1, &pObject, &uReturn);
                  if(0 == uReturn)
                  { 
                        break; 
                }
                  VARIANT vtProp;
                  VariantInit(&vtProp);
                  hr = pObject->Get(L"Name", 0, &vtProp, 0, 0);
                  std::wcout << " Name : " << vtProp.bstrVal << std::endl;
                  VariantClear(&vtProp);
                  }
                  pLocator->Release();
                    ::CoUninitialize();
                  return 0;
  }


EvgeniyQQQ 22-10-2009 11:58 1249409

Добрый, день.

Мне необходимо на С++ с помощью WinApi (желательно без использования WMI и NetBIOS) определить MAC-адрес физических сетевых карт на локальном компьютере. Как определить адреса всех карт - физических и виртуальных, я разобрался. А вот как отфильтровать, не знаю.

Пользуюсь функцией:
Код:

DWORD GetAdaptersInfo(  __out    PIP_ADAPTER_INFO pAdapterInfo, __inout  PULONG pOutBufLen );
В структуре IP_ADAPTER_INFO, полей указывающих на то, что это физический адаптер или нет- не нашел.

Может кто сталкивался с подобной проблемой, подскажите пожалуйста)))


Время: 10:01.

Время: 10:01.
© OSzone.net 2001-