1 / 1 / 0
Регистрация: 22.04.2019
Сообщений: 64

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

10.03.2020, 14:25. Показов 1626. Ответов 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
6353 / 3524 / 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
6353 / 3524 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
14.03.2020, 12:27
Цитата Сообщение от Crash7x Посмотреть сообщение
Может быть это поможет понять почему не работает
это просто загрузка информации для отладки, оно никак не влияет на работу кода
0
 Аватар для zayats80888
6353 / 3524 / 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
6353 / 3524 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru