Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330

Получить уникальный идентификатор

23.05.2017, 20:01. Показов 4723. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, помогите получить какой либо уникальный идентификатор. Есть много похожих тем, про получение cpuid, mac адресу сетевой и тд. Но в cpuid скрыты последние символы и поэтому он не обеспечивает уникальности. Код такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
long s1, s2, s3;
wchar_t temp[MAX_PATH];
_asm
    {
        mov eax,01h
        xor edx,edx
        cpuid
        mov s1,eax
        mov eax,03h
        xor ecx,ecx
        xor edx,edx
        cpuid
        mov s2,edx
        mov s3,ecx
    }
wsprintf (temp, L"%08X-%08X-%08X",  s1, s2, s3);
//std::string str (temp, sizeof(temp));
sizeof(temp);
Результат типа 0001067A-00000000-00000000
По mac адресу не прокатывает, т.к. не на всех машинах есть сетевые карты. А код для получения ID жесткого диска я так и не нашел..
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2017, 20:01
Ответы с готовыми решениями:

Как получить уникальный идентификатор сеанса
1) Как получить уникальный идентификатор СЕАНСА 2) И правильно ли будет хранить этот идентификатор (если конечно его можно получить) в...

Как получить уникальный идентификатор (Hardware ID) HWID?
Всем привет :) Ранее все писал на C#, сейчас потихоньку учу C++ и хотел бы узнать, как получить hardware id? Чтобы программа...

Как получить уникальный идентификатор устройства (планшета)?
Как получить уникальный идентификатор устройства(планшета)? Подскажите готовое решение, пожалуйста.

29
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
31.05.2017, 18:31  [ТС]
Студворк — интернет-сервис помощи студентам
возвращает метку системного диска:
C:

Добавлено через 33 секунды
на этом этапе все правильно
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
31.05.2017, 18:31
а можно весь Ваш код по получению сирийника?
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
31.05.2017, 18:32  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 STORAGE_PROPERTY_QUERY query;
 std::auto_ptr<DWORD> dwBytesReturned ( new DWORD);
 std::auto_ptr<STORAGE_DEVICE_DESCRIPTOR> buffer( new STORAGE_DEVICE_DESCRIPTOR[5]);
 
 
 String sistem_hdd ;
 sistem_hdd = getenv("SYSTEMDRIVE");   //Получаем диск на котором стоит ОС
 ShowMessage(sistem_hdd);
 sistem_hdd = "\\\\."+sistem_hdd;
 
 
 HANDLE hDrive = CreateFile(sistem_hdd.c_str(), 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
 
 query.PropertyId = StorageDeviceProperty;
 query.QueryType = PropertyStandardQuery;
 
 DeviceIoControl(hDrive, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query),buffer.get(), 500, dwBytesReturned.get()  , NULL);
 CloseHandle ( hDrive );
 
 if (buffer->SerialNumberOffset != 0)
     {
      lb->Items->Add("SerialNumber: " + String(((char*)buffer.get() + buffer->SerialNumberOffset)));
     }
заголовок:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <Registry.hpp >
#include <memory>
#include <Winioctl.h>
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
String s;
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
31.05.2017, 18:37
ааа, сорян , добавьте два слеша после точки =) Просто форум съел их, видимо служебные символы.

C++
1
sistem_hdd = "\\\\.\\"+sistem_hdd;
1
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
31.05.2017, 18:41  [ТС]
да, спасибо все получилось! Буду тестить
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
05.07.2017, 18:21  [ТС]
Dinkin, тестил на win 7 все отлично работает. Тестил примерно на 20 машинах.
А вот когда дело дошло до 10-ки началось.... Вообщем сначала на виртуальной машине результат такого вида:
VBd283c29e-58f7658b. Ну да ладно, на виртуалке свои заморочки. А вот реальная машина на 10-ке выдала следующее:
_________66TZTLTKT
Знак "__" это пробелы. Что может быть не так ?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
05.07.2017, 21:42
S0lexV, На сколько мне известно, то это нормально...особенно на старых WD с емкостью 320гб и 500гб. То есть они к примеру выделяют под сирийник 20 символов, и постепенно эти пробелы заполняются. На всяк попробуйте перепроверить через AIDA к примеру.
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
06.07.2017, 08:58  [ТС]
проверю через HDDTune
меня еще беспокоит тот фактор что чем больше пробелов тем больше вероятность совпадения с уже существующим ID..
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,182
Записей в блоге: 3
06.07.2017, 11:57
Цитата Сообщение от S0lexV Посмотреть сообщение
проверю через HDDTune
Ну и что показала программа?

Пробелы не меняются в процессе жизни hdd..их можно расценивать как нули)) Другое дело если Вы вручную решили преобразовать полученный код, тогда пробелов может и не быть.

Цитата Сообщение от S0lexV Посмотреть сообщение
меня еще беспокоит тот фактор что чем больше пробелов тем больше вероятность совпадения с уже существующим..
Производители уверяют, что этого не может быть.

Добавлено через 17 секунд
Цитата Сообщение от S0lexV Посмотреть сообщение
проверю через HDDTune
Ну и что показала программа?

Пробелы не меняются в процессе жизни hdd..их можно расценивать как нули)) Другое дело если Вы вручную решили преобразовать полученный код, тогда пробелов может и не быть.

Цитата Сообщение от S0lexV Посмотреть сообщение
меня еще беспокоит тот фактор что чем больше пробелов тем больше вероятность совпадения с уже существующим..
Производители уверяют, что этого не может быть.
0
 Аватар для S0lexV
21 / 21 / 7
Регистрация: 27.07.2011
Сообщений: 330
06.07.2017, 12:12  [ТС]
эта машина удаленная, результат узнаю чуть позже
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.07.2017, 12:12

Как получить уникальный идентификатор девайса через SetupDiGetDeviceInterfaceDetail
Всем привет, у меня есть функция, которая по заданному интерфейсному guid пробегается по всем девайсам, предоставляющим этот интерфейс и...

Уникальный идентификатор
Здравствуйте. Я в этом деле начинающий и многого не знаю. Так вот у меня программа на андроиде которая каждую минуту(к примеру)...

уникальный идентификатор
Помогите с задачей. Есть форма стандартная форма входа. При входе перекидывает на страницу -форму. Как получить aspnet_User(UserId) из ...

Уникальный идентификатор
Здравствуйте! Учусь писать приложения для UWP. Посоветуйте, пожалуйста, как на практике лучше всего (правильнее!) организовать...

Уникальный идентификатор
Создал таблицу CREATE TABLE . ( UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, NCHAR (10) NULL, PRIMARY KEY...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru