| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Идентификационные номера устройств |
| Автор: Гость_Andrey 4.12.2003, 17:50 |
| Здравствуйте ! Суть вопроса: Получить идентификационный номер какого-нибудь железа в составе компа (идентификационный номер жесткого диска, процессора, материнской платы и т.п.) Как это сделать, подскажите пожалуйста. P.S. GetVolumeInformation () и т.п. функции не подходят ... Сам пробовал получить идентификационный номер жесткого диска (подсказали как это сделать), работает в Win2k, но только если пользователь с правами администратора. С правами пользователя в коде: HANDLE OpenSmartDevice(UCHAR DrvNum) { HANDLE hsmart; OSVERSIONINFO ovi; CHAR buf[64]="\\.\SMARTVSD"; ovi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO); GetVersionEx(&ovi); if(ovi.dwPlatformId==VER_PLATFORM_WIN32_NT) sprintf(buf,"\\.\PhysicalDrive%u",DrvNum); hsmart = CreateFile( buf,GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0,OPEN_EXISTING,0,0 ); return hsmart; } CreateFile() выдает 0xFFFFFF Подскажите как сие побороть. Спасибо заранее любым ответам и ссылкам. |
| Автор: Ars 4.12.2003, 18:10 |
| Как минимум, надо продублировать слэши в строковых массивах |
| Автор: Гость_Andrey 4.12.2003, 18:20 | ||
Да все дело в том, что код работает (номер винта выдается), но это работает только с правами администратора для данного компа, а нужно для любого пользователя ... |
| Автор: Ars 4.12.2003, 18:40 |
| GetLastError пишет "Access is denied". У юзера не хватает правов для такой серьезной операции |
| Автор: Guest 4.12.2003, 18:59 | ||
Да вот в том и дело, что нужно узнать с любыми правами ентого юзверя ... А ежели сделать сервис и из программы обращаться к нему ? Возможно получение такой инфы ? Он ведь уже не зависит от прав пользователя, или я ошибаюсь ? |
| Автор: DENNN 5.12.2003, 10:28 | ||
Под каким аккаунтом он запущен - такие будут и права. |