c++获取硬盘or分区序列号

news/2025/2/13 0:40:40/

        在使用 Windows 时,可以使用命令获取硬盘分区的(或多或少唯一的)序列号。

GetVolumeInformation()

示例代码:

#include <iostream>#include <windows.h>
#include <stdio.h>int main(int argc, char **argv)
{DWORD VolumeSerialNumber;char VolumeName[256];GetVolumeInformation("c:\\ ", VolumeName, 12, &VolumeSerialNumber, NULL, NULL, NULL, 10);printf("c盘的卷标:%s\n ", VolumeName);printf("c盘的序列号:%lu\n ", VolumeSerialNumber);return 0;
}

结果:

c盘的卷标:Windows 
c盘的序列号:3831598124

        Linux 有类似的东西吗?获得硬件设备的唯一编码,并且可以通过编程方式检索?

解决方案:

        在 linux 中,可以使用 blkid 命令获取分区的 UUID:

# sudo blkid /dev/sda1
/dev/sda1: UUID="007258df-98ea-47de-b906-35997ea63509" TYPE="ext4" PARTUUID="5c1bef5e-01"

        此信息以特定分区类型(如 ext4、xfs)的格式存储,并在重新格式化时发生变化。

        如果需要从代码中调用它,调用一个 shell 来运行这个命令并不是最好的方法,但它可以工作:

// main.cpp
#include <stdio.h>int main(int argc,char ** argv) 
{/* device you are looking for */   char device[]="/dev/sda1";/* buffer to hold info */char buffer[1024];/* format into a single command to be run */sprintf(buffer,"/sbin/blkid -o value %s",device);/* run the command via popen */FILE *f=popen(buffer,"r");/* probably should check to make sure f!=null *//* read the first line of output */fgets(buffer,sizeof(buffer),f);/* print the results (note, newline is included in string) */fprintf(stdout,"uuid is %s",buffer);
}

CMakeLists.txt

# 声明要求的 cmake 最低版本
cmake_minimum_required(VERSION 2.8)# 声明一个 cmake 工程
project(blkid_sd)# 设置编译模式
set(CMAKE_BUILD_TYPE "RELEASE")# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable(blkid_sd main.cpp)

执行命令:

mkdir build
cd build
cmake ..
make -j4
sudo ./blkid_sd
=> uuid is 007258df-98ea-47de-b906-35997ea63509

        关于c++获取硬盘/分区序列号,在Stack Overflow有一个类似的问题: c++ - Get HD/Partition serial number - Stack Overflow。


http://www.ppmy.cn/news/598296.html

相关文章

怎么关闭macbook右上角的时间日期显示?

MAC全部取消时间目前没有彻底解决的办法&#xff0c;但是研究了下可以设置只能去掉日期&#xff0c;星期&#xff0c;同时显示时钟表盘的方式。 最终效果图&#xff1a; 操作步骤&#xff1a; 1. 点击【系统偏好设置】 2.点击【程序坞与菜单栏】 3. 按下图设置。

MacBook设置中国时区时间

新拿的办公电脑&#xff0c;想设置时间来着&#xff0c;设置里找了一圈&#xff0c;愣是一个没找着&#xff0c;哪怕有亚洲的也好啊&#xff0c; 下拉列表清一色美国&#xff0c;无语&#x1f613; // 打开终端 输入以下命令 sudo systemsetup -settimezone Asia/Shanghai按下回…

MacOS通过Time Machine恢复,迁移到新MacBook Pro后聚焦搜索与访达最近使用不正常的最终解决方法

有一次老的MacBook Pro出了问题&#xff0c;格式化后重装了系统通过Time Machine恢复后发现有部分软件不正常&#xff0c;而且系统自带的聚焦搜索&#xff0c;访达最近使用也都不显示东西了&#xff0c;最近换了新款的MacBook Pro使用迁移助理后也出现了这个问题&#xff0c;各…

苹果延长13英寸MacBook Pro背光维修计划

苹果本周延长了其全球13英寸MacBook Pro显示屏背光服务计划&#xff0c;授权符合条件的笔记本电脑的保修期自原始购买日期起最长为五年&#xff0c;或自该程序开始日期起最长为三年&#xff08;以时间较长者为准&#xff09;。上一个截止日期是原始购买日期之后的四年。苹果公司…

【苹果电脑(Macbook/Macbook Pro)查看本机IP地址和DNS地址的具体步骤】

文章目录 具体步骤总结 具体步骤 1、首先是该苹果电脑必须联网&#xff0c;没有联网IP地址根本无从谈起。 2、在桌面左上角点击文件–访达–打开系统偏好设置&#xff0c;点击网络。 3、点击连接的网络&#xff0c;比如这边是Wi-Fi&#xff0c;右侧的Wi-Fi状态即可看到IP地址&…

曾在美国生产的苹果电脑,如今却败得一塌糊涂

乔布斯曾尝试在硅谷建立制造文化。然而正如一位前苹果工程师所说的那样&#xff1a;“这项业务发展得并不好。” 苹果比诺基亚更优秀的一点&#xff0c;在于其在电脑领域的布局。然而&#xff0c;近些年&#xff0c;其电脑的优势也逐渐丧失。人们甚至已经担心&#xff0c;苹果会…

16条Macbook苹果电脑保养方法手册

16条Macbook苹果电脑保养手册大全丨老规矩&#xff0c;为了方便大家复制、收藏&#xff0c;两个版本&#xff0c;一个图片版本&#xff0c;一个文字版本哦。 图片版&#xff1a; 文字版 1、设置亮度 适当地调低屏幕亮度,因为屏幕是Mac的一个耗电大户,把亮度调到适当亮度可以节电…

macbook历代_逼格进化史,看看苹果MacBook发展历程

苹果电脑发展史:看看Mac是如何进化的 纵观整个苹果的发展史,Mac产品无疑占据了重要地方,它成就了苹果的今天。如今,OS X已经更名为macOS,这个时间点非常适合回顾一下苹果的电脑发展史,一起来看看Mac们是如何进化的。 【Apple I(1976)】1976年,史蒂夫 乔布斯、史蒂夫 沃兹…