Windows下C语言获取硬盘和网卡cpu序列号
在Windows下,可以通过以下方法获取硬盘和网卡的序列号:
- 获取硬盘序列号:
#include <stdio.h>
#include <windows.h>
int main() {
char volumeName[MAX_PATH + 1] = {0};
char fileSystemName[MAX_PATH + 1] = {0};
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;
if (GetVolumeInformation("C:\\", volumeName, MAX_PATH + 1, &serialNumber, &maxComponentLen, &fileSystemFlags, fileSystemName, MAX_PATH + 1)) {
printf("Hard Disk Serial Number: %lu\n", serialNumber);
} else {
printf("Failed to get hard disk serial number.\n");
}
return 0;
}
- 获取网卡序列号:
#include <stdio.h>
#include <windows.h>
#include <iphlpapi.h>
#pragma comment(lib, "iphlpapi.lib")
int main() {
DWORD dwSize = 0;
PIP_ADAPTER_INFO pAdapterInfo = NULL;
PIP_ADAPTER_INFO pAdapter = NULL;
if (GetAdaptersInfo(NULL, &dwSize) == ERROR_BUFFER_OVERFLOW) {
pAdapterInfo = (PIP_ADAPTER_INFO)malloc(dwSize);
if (pAdapterInfo == NULL) {
printf("Failed to allocate memory.\n");
return 1;
}
} else {
printf("Failed to get adapter info size.\n");
return 1;
}
if (GetAdaptersInfo(pAdapterInfo, &dwSize) == NO_ERROR) {
pAdapter = pAdapterInfo;
while (pAdapter != NULL) {
printf("Adapter Description: %s\n", pAdapter->Description);
printf("Adapter MAC Address: ");
for (DWORD i = 0; i < pAdapter->AddressLength; i++) {
if (i == (pAdapter->AddressLength - 1)) {
printf("%.2X\n", pAdapter->Address[i]);
} else {
printf("%.2X-", pAdapter->Address[i]);
}
}
pAdapter = pAdapter->Next;
}
} else {
printf("Failed to get adapter info.\n");
}
if (pAdapterInfo != NULL) {
free(pAdapterInfo);
}
return 0;
}
需要注意的是,以上代码需要链接iphlpapi.lib库,可以在代码中使用#pragma comment(lib, "iphlpapi.lib")来自动链接
原文地址: https://www.cveoy.top/t/topic/h4tJ 著作权归作者所有。请勿转载和采集!