zoukankan      html  css  js  c++  java
  • C++读取硬盘物理序列号-非管理员权限

    #include "stdafx.h"
    #include <windows.h>
    #include <stdio.h>

    int main()
    {
        static BYTE buffer[0x1000];
        WCHAR path[] = L"\\.\PhysicalDrive0";

        STORAGE_DEVICE_DESCRIPTOR* descriptor = (STORAGE_DEVICE_DESCRIPTOR*)buffer;
        STORAGE_PROPERTY_QUERY p = { StorageDeviceProperty, PropertyStandardQuery };
        DWORD retn;
        DWORD len = wcslen(path);
        while(true) {        
            HANDLE hDisk = CreateFile(path, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
                                   OPEN_EXISTING, 0, NULL);
            if (hDisk == INVALID_HANDLE_VALUE) break;

            if (!DeviceIoControl(hDisk, IOCTL_STORAGE_QUERY_PROPERTY, &p, sizeof(p),
                buffer, sizeof(buffer), &retn, 0)) break;
            
            wprintf(L"%s ", path);

            if (descriptor->VendorIdOffset > 0)
                printf("VendorId: %s ", buffer + descriptor->VendorIdOffset);

            if (descriptor->ProductIdOffset > 0)
                printf("ProductId: %s ", buffer + descriptor->ProductIdOffset);

            if (descriptor->ProductRevisionOffset > 0)
                printf("ProductRevision: %s ", buffer + descriptor->ProductRevisionOffset);

            if (descriptor->SerialNumberOffset > 0)
                printf("SerialNumber: %s ", buffer + descriptor->SerialNumberOffset);

            printf(" ");
            CloseHandle(hDisk);
            path[len - 1]++;
        }

        return 0;
    }
    ————————————————
    版权声明:本文为CSDN博主「wuxq」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wuxq/java/article/details/89071444

  • 相关阅读:
    Delphi
    delphi trayIcon控件,如何实现窗口最小化的时候到系统托盘
    delphi2010自带 TTrayIcon 托盘图标控件使用方法
    通过例子来简单了解下TProgressBar的使用。 pas文件程序如下
    ORA-12154,ORA-12560解决过程
    博客备份小工具3
    各大招聘网站信息实时查询浏览
    IE7中使用Jquery动态操作name问题
    js问题杂记
    动态sql
  • 原文地址:https://www.cnblogs.com/yuanscn/p/12905847.html
Copyright © 2011-2022 走看看