Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить Id железа, для привязки к железу 
:(
    Опции темы
bigturtle
Дата 27.7.2009, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 27.1.2009

Репутация: нет
Всего: нет



Здравствуйте, скажите каким образом можно на чистом с/c++ получить Id материнки, винчестера, процессора. Спасибо. 
PM MAIL   Вверх
mes
Дата 27.7.2009, 11:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



на чистом - никак ..  для этого пользуются Api оси.




--------------------
PM MAIL WWW   Вверх
bigturtle
Дата 27.7.2009, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 27.1.2009

Репутация: нет
Всего: нет



Тогда другие варианты, 
нашел код но это не то 
Код

#include <windows.h>
#include <stdio.h>
#define BUFSIZE 1024
int  main()
{
   LPTSTR lpszSystemInfo;      // pointer to system information string
   DWORD cchBuff = BUFSIZE;    // size of computer or user name
   TCHAR tchBuffer[BUFSIZE];   // buffer for string
   DWORD dwResult;             // function return value
 
   lpszSystemInfo = tchBuffer; 
 
   // Get and display the name of the computer.
 
   if( GetComputerName(lpszSystemInfo, &cchBuff) ) 
      printf("Computer name:  %s\n", lpszSystemInfo); 
 
   // Get and display the user name.
   cchBuff = BUFSIZE; 
   if( GetUserName(lpszSystemInfo, &cchBuff) )
      printf("User name:  %s\n\n", lpszSystemInfo);
 
   // Get and display the system directory.
 
   if( GetSystemDirectory(lpszSystemInfo, MAX_PATH+1) ) 
      printf("System directory:  %s\n", lpszSystemInfo); 
   // Get and display the Windows directory.
 
   if( GetWindowsDirectory(lpszSystemInfo, MAX_PATH+1) )
      printf("Windows directory:  %s\n\n", lpszSystemInfo);
 
   // Display the "environment variables" header.
 
   printf("Environment variables (partial list): \n"); 
 
   // Expand the OS environment variable.
 
   dwResult = ExpandEnvironmentStrings( 
                 "OS=%OS%",
                 lpszSystemInfo, 
                 BUFSIZE);
   if( dwResult <= BUFSIZE )
      printf("  %s\n", lpszSystemInfo);
 
   // Expand the PATH environment variable.
 
   dwResult = ExpandEnvironmentStrings( 
                 "PATH=%PATH%", 
                 lpszSystemInfo, 
                 BUFSIZE);
   if( dwResult <= BUFSIZE )
      printf("  %s\n", lpszSystemInfo);
 
   // Expand the TMP environment variable.
  
   dwResult = ExpandEnvironmentStrings( 
               "TEMP=%TEMP%",
               lpszSystemInfo, 
               BUFSIZE);
   if( dwResult <= BUFSIZE )
      printf("  %s\n", lpszSystemInfo);
  SYSTEM_INFO siSysInfo;
   // info about "metall" coping into structure SYSTEM_INFO.
   GetSystemInfo(&siSysInfo);
   // printing SYSTEM_INFO.
   printf("Hardware information: \n");
   printf("  OEM ID: %u\n", siSysInfo.dwOemId);
   printf("  Number of processors: %u\n",
      siSysInfo.dwNumberOfProcessors);
   printf("  Page size: %u\n", siSysInfo.dwPageSize);
   printf("  Processor type: %u\n", siSysInfo.dwProcessorType);
   printf("  Minimum application address: %lx\n",
      siSysInfo.lpMinimumApplicationAddress);
   printf("  Maximum application address: %lx\n",
      siSysInfo.lpMaximumApplicationAddress);
   printf("  Active processor mask: %u\n",
      siSysInfo.dwActiveProcessorMask);
getchar();
}

Может кому пригодится, но в мое ситуации не сильно подходит. 
PM MAIL   Вверх
azesmcar
Дата 27.7.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



bigturtle

Это WinAPI а не чистый C++.
А зачем нужно это сделать именно на чистом C++?
PM   Вверх
andrew_121
Дата 27.7.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Ничего общего у С++ и железа нет.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bigturtle
Дата 28.7.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 27.1.2009

Репутация: нет
Всего: нет



Возможно есть у кого то код с winAPI что бы получить то что нужно... 

PM MAIL   Вверх
azesmcar
Дата 28.7.2009, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



bigturtle

Id какого именно железа нужно получить? Код для всех совершенно разный, проще всего MAC адрес LAN карты.
Вот например
http://www.codeguru.com/cpp/i-n/network/ne...ticle.php/c5451

Это сообщение отредактировал(а) azesmcar - 28.7.2009, 08:30
PM   Вверх
bigturtle
Дата 28.7.2009, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 27.1.2009

Репутация: нет
Всего: нет



Спасибо за пример,   но в моем варианте программу нужно привязать к железу и целесообразнее использовать именно id материнки или выше описанного железа.
PM MAIL   Вверх
azesmcar
Дата 28.7.2009, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Вот, изменил один пример под твои нужды, только не спрашивай меня как все это работает smile
засунь в DLL и используй на здоровье.
Код

#define _WIN32_DCOM
#include <iostream>
#include <comdef.h>
#include <Wbemidl.h>

#pragma comment(lib, "wbemuuid.lib")

int main(int argc, char **argv)
{
    CoInitialize(NULL);
    
    if(CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, 0) != S_OK)
        return 1;

    IWbemLocator* pIWbemLocator        = NULL;
    IWbemServices* pWbemServices        = NULL;
    IEnumWbemClassObject* pEnumObject    = NULL;

    BSTR bstrNamespace = (L"root\\cimv2");

    HRESULT hRes = CoCreateInstance(
        CLSID_WbemAdministrativeLocator,
        NULL,
        CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
        IID_IUnknown,
        (void**)&pIWbemLocator);

    if (SUCCEEDED(hRes))
    {
        hRes = pIWbemLocator->ConnectServer(bstrNamespace,
            NULL,
            NULL,
            NULL,
            0,
            NULL,
            NULL,
            &pWbemServices);
    }

    hRes = pWbemServices->ExecQuery(L"WQL", L"Select * from Win32_BaseBoard", WBEM_FLAG_RETURN_IMMEDIATELY,NULL,&pEnumObject);
    ULONG uCount = 1, uReturned;
    IWbemClassObject * pClassObject = NULL;
    hRes = pEnumObject->Reset();
    hRes = pEnumObject->Next(WBEM_INFINITE,uCount, &pClassObject, &uReturned);
    VARIANT v;
    BSTR strClassProp = SysAllocString(L"SerialNumber");
    hRes = pClassObject->Get(strClassProp, 0, &v, 0, 0);
    SysFreeString(strClassProp);

    _bstr_t bstrPath = &v;

    char* strPath=(char*)bstrPath;
    if (SUCCEEDED(hRes))
        std::cout << strPath << std::endl;
    else
        std::cerr << "Error getting object" << std::endl;
    
    VariantClear( &v );
    pIWbemLocator->Release();
    pWbemServices->Release();
    pEnumObject->Release();
    pClassObject->Release();
    CoUninitialize();
}


Это сообщение отредактировал(а) azesmcar - 28.7.2009, 09:43
PM   Вверх
bigturtle
Дата 28.7.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 27.1.2009

Репутация: нет
Всего: нет



Хотелось бы узнать как это работает (шутка) smile  Спасибо сейчас попробую...

Это сообщение отредактировал(а) bigturtle - 28.7.2009, 09:47
PM MAIL   Вверх
azesmcar
Дата 28.7.2009, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(bigturtle @  28.7.2009,  09:47 Найти цитируемый пост)
Хотелось бы узнать как это работает (шутка) 

Ну..работает через WMI. В итоге Windows предоставляет эту информацию, мы просто ее берем.
PM   Вверх
jonie
Дата 28.7.2009, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



Цитата
 В итоге Windows предоставляет эту информацию, мы просто ее берем.

... а значит можем и подменить...
в общем-то привязка к железу - это все до первого "кул ][@kerа" имхо...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
azesmcar
Дата 29.7.2009, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(jonie @  28.7.2009,  23:58 Найти цитируемый пост)
... а значит можем и подменить...

А кто спорит то, подменить можно все, но кому это надо? В конце концов легче программе дизассемблером изменить условие проверки чем подменять ID материнской платы. Но это отдельный разговор. smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1108 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.