Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64

Серийник флэшки

10.03.2020, 14:25. Показов 1573. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть код который вытаскивает серийник флэшки (если путь прописать в creatfile) и почему то работает он только на виндовс 8-10, а на 7 выдаёт сплошную стрелочку вниз. Как это можно решить и почему это происходит (win 7 x64)
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
#include <iostream>
#include <windows.h>
#include <Winioctl.h>
 
int main()
{
    DWORD dwBytesReturned;
    STORAGE_PROPERTY_QUERY query;
    STORAGE_DEVICE_DESCRIPTOR *buffer;
 
    buffer = new STORAGE_DEVICE_DESCRIPTOR[5];
 
    HANDLE hDrive = CreateFile(L"\\\\.\\PhysicalDrive0", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
        OPEN_EXISTING, 0, NULL);
 
    memset((void *)&query, 0, sizeof (query));
    memset((void *)buffer, 0, sizeof (buffer));
 
    query.PropertyId = StorageDeviceProperty;
    query.QueryType = PropertyExistsQuery;
 
    query.PropertyId = StorageDeviceProperty;
    query.QueryType = PropertyStandardQuery;
 
    DeviceIoControl(hDrive, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query),
        buffer, 500, &dwBytesReturned, NULL);
 
    if (buffer->VendorIdOffset != 0) {
        char *str = (char*)((char*)buffer + buffer->VendorIdOffset);
        cout << "VendorId: " << str << endl;
    }
    if (buffer->ProductIdOffset != 0) {
        char *str = (char*)((char*)buffer + buffer->ProductIdOffset);
        cout << "ProductId: " << str << endl;
    }
    if (buffer->ProductRevisionOffset != 0) {
        char *str = (char*)((char*)buffer + buffer->ProductRevisionOffset);
        cout << "ProductRevision: " << str << endl;
    }
    if (buffer->SerialNumberOffset != 0) {
        char *str = (char*)((char*)buffer + buffer->SerialNumberOffset);
        cout << "SerialNumber: " << str << endl;
    }
 
    CloseHandle(hDrive);
    delete[] buffer;
    
    system("pause");
}
Миниатюры
Серийник флэшки  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2020, 14:25
Ответы с готовыми решениями:

Функции DeviceIoControl: вытащить серийник с флешки, диска
Здравствуйте! Помогите пожалуйста с помощью функции DeviceIoControl и CreateFile вытащить серийник с флэшки, диска и тд. Не понимаю как...

Автоматическое определение втыкания флэшки
мне необходимо сделать так, чтобы запущенная программа при втыкании флэшки понимала это и запускала какие-то действия

Извлечение флэшки с программы которая запущена с той же флэшки
Пишу типа авторана для флэшки. И там я хочу написать код который-би безопасно извлекал флэшку. Использую юнит который с большим трудом...

29
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
10.03.2020, 22:14  [ТС]
Студворк — интернет-сервис помощи студентам
Помогло. Завтра потестирую всё до конца
0
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
11.03.2020, 13:12  [ТС]
Проверил, всё равно выдает ту же стрелочку
Миниатюры
Серийник флэшки  
0
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
11.03.2020, 13:25  [ТС]
"хз что как.exe": Загружено: "C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\хз что как\Debug\хз что как.exe", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll" , Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\msvcp100d.dll", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "ImageAtBase0x4a990000", Загрузка отключена параметром включения/исключения.
"хз что как.exe": Выгружено: "ImageAtBase0x4a990000"
Это в режиме откладке
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.03.2020, 14:06
Crash7x, У меня в 7 винде работает
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <windows.h>
#include <Winioctl.h>
 
using namespace std;
 
int main()
{
    DWORD dwBytesReturned = 0;
    STORAGE_PROPERTY_QUERY query;
    STORAGE_DESCRIPTOR_HEADER info = { 0 };
    STORAGE_DEVICE_DESCRIPTOR *buffer = NULL;
 
    HANDLE hDrive = CreateFileW(L"\\\\.\\PhysicalDrive0", 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),
        &info, sizeof(info), &dwBytesReturned, NULL);
 
    if (dwBytesReturned)
    {
        dwBytesReturned = 0;
        buffer = (STORAGE_DEVICE_DESCRIPTOR*)new BYTE[info.Size];
        DeviceIoControl(hDrive, IOCTL_STORAGE_QUERY_PROPERTY, &query, sizeof(query),
            buffer, info.Size, &dwBytesReturned, NULL);
        if (dwBytesReturned)
        {
            if (buffer->VendorIdOffset != 0) {
                char *str = (char*)((char*)buffer + buffer->VendorIdOffset);
                cout << "VendorId: " << str << endl;
            }
            if (buffer->ProductIdOffset != 0) {
                char *str = (char*)((char*)buffer + buffer->ProductIdOffset);
                cout << "ProductId: " << str << endl;
            }
            if (buffer->ProductRevisionOffset != 0) {
                char *str = (char*)((char*)buffer + buffer->ProductRevisionOffset);
                cout << "ProductRevision: " << str << endl;
            }
            if (buffer->SerialNumberOffset != 0) {
                char *str = (char*)((char*)buffer + buffer->SerialNumberOffset);
                cout << "SerialNumber: " << str << endl;
            }
        }
        delete[] buffer;
        buffer = NULL;
    }
    
    CloseHandle(hDrive);
 
    system("pause");
}

0
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
14.03.2020, 12:18  [ТС]
zayats80888, Я попробовал запустить на 3 разных компьютерах на разных windows 7 и ни где не работает даже ваш код.

Добавлено через 1 минуту
"хз что как.exe": Загружено: "C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\хз что как\Debug\хз что как.exe", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll" , Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\msvcp100d.dll", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"хз что как.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
"хз что как.exe": Загружено: "ImageAtBase0x4a990000", Загрузка отключена параметром включения/исключения.
"хз что как.exe": Выгружено: "ImageAtBase0x4a990000"

Может быть это поможет понять почему не работает. Это режим отладки
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
14.03.2020, 12:27
Цитата Сообщение от Crash7x Посмотреть сообщение
Может быть это поможет понять почему не работает
это просто загрузка информации для отладки, оно никак не влияет на работу кода
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
14.03.2020, 12:28
Цитата Сообщение от Crash7x Посмотреть сообщение
Может быть это поможет понять почему не работает
это просто загрузка информации для отладки, оно никак не влияет на работу кода
0
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
14.03.2020, 18:35  [ТС]
Но это странно тогда.
Почему оно не хочет работать? Ведь уже на 4 компах проверил и везде где 7 вин не работает. А на 10 и 8 работает норм

Добавлено через 3 минуты
И это происходит именно с флэшками. Жёсткие диски видит
0
1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64
15.03.2020, 13:53  [ТС]
zayats80888, а это может зависить от компилятора?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
15.03.2020, 14:01
Crash7x, на форуме есть специализированный раздел для WinAPI, там обитают эксперты, они помогут, т.к. я в WinAPI не шарю, к сожалению.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2020, 14:01

Внутри флэшки ярлык флэшки
Добрый день! Уже не знаю который день внутри флэшки лежит ярлык на саму флэшку через который можно открыть файлы.Но буквально вчера или...

Серийник к макросу
Здравствуйте. У меня имеется некий макрос который работает только на одном ПК (при запуске на другом вылазиет сообщение Bye, а на том...

Серийник для CS4
Суть проблемы следующая: Установил CS4 с кейгениным серийником. При запуске програм каждый день пишет одно замечение &quot;ваш серийник...

Кофеварка ZELMER серийник 10. 12, Алгоритм действия
Доброго дня , был на заявке по СМА , клиенты отдали кофеварку , скорее всего китайская , все что смог прочитать ZELMER серийник 10. 12...

Узнать серийник HDD, материнки, процессора
Нужен серийник харда, материнки, процессора Настаскивал с инета в кучу следующее using System; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru