ZBLOG

获取 硬件唯一ID

获取硬件唯一ID的方法因操作系统和编程语言而异。以下是一些常见的方式:

Windows

在Windows上,可以使用WMI(Windows Management Instrumentation)来获取硬件唯一标识符。

使用C++:

  1. #include <iostream>
  2. #include <comdef.h>
  3. #include <Wbemidl.h>
  4. #pragma comment(lib, "wbemuuid.lib")
  5. void GetHardwareID() {
  6. HRESULT hres;
  7. // 初始化COM库
  8. hres = CoInitializeEx(0, COINIT_MULTITHREADED);
  9. if (FAILED(hres)) {
  10. std::cout << "Failed to initialize COM library. Error code = 0x"
  11. << std::hex << hres << std::endl;
  12. return;
  13. }
  14. // 初始化安全性
  15. hres = CoInitializeSecurity(
  16. NULL,
  17. -1, // COM negotiates service
  18. NULL, // Authentication services
  19. NULL, // Reserved
  20. RPC_C_AUTHN_LEVEL_DEFAULT,
  21. RPC_C_IMP_LEVEL_IMPERSONATE,
  22. NULL, // Reserved
  23. EOAC_NONE, // Additional capabilities
  24. NULL // Reserved
  25. );
  26. // 创建 WMI 接口的实例
  27. IWbemLocator *pLoc = NULL;
  28. hres = CoCreateInstance(
  29. CLSID_WbemLocator,
  30. 0,
  31. CLSCTX_INPROC_SERVER,
  32. IID_IWbemLocator,(LPVOID *)&pLoc);
  33. IWbemServices *pSvc = NULL;
  34. hres = pLoc->ConnectServer(
  35. _bstr_t(L"ROOT\\CIMV2"), // WMI namespace
  36. NULL, // User name
  37. NULL, // User password
  38. 0, // Locale
  39. NULL, // Security flags
  40. 0, // Authority (for example, Kerberos)
  41. 0, // Context object
  42. &pSvc // pointer to IWbemServices proxy
  43. );
  44. IEnumWbemClassObject* pEnumerator = NULL;
  45. hres = pSvc->ExecQuery(
  46. bstr_t("WQL"),
  47. bstr_t("SELECT * FROM Win32_ComputerSystemProduct"),
  48. WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
  49. NULL,
  50. &pEnumerator);
  51. IWbemClassObject *pclsObj = NULL;
  52. ULONG uReturn = 0;
  53. while (pEnumerator) {
  54. HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,&pclsObj,&uReturn);
  55. if(0 == uReturn) break;
  56. VARIANT vtProp;
  57. hr = pclsObj->Get(L"UUID", 0, &vtProp, 0, 0);
  58. wprintf(L"Hardware ID: %s\n", vtProp.bstrVal);
  59. VariantClear(&vtProp);
  60. pclsObj->Release();
  61. }
  62. pSvc->Release();
  63. pLoc->Release();
  64. pEnumerator->Release();
  65. CoUninitialize();
  66. }
  67. int main() {
  68. GetHardwareID();
  69. return 0;
  70. }

Linux

在Linux上,可以通过读取 /etc/machine-idcat /var/lib/dbus/machine-id 来获取机器唯一ID。

使用Shell命令:

  1. cat /etc/machine-id

Python 示例

如果你使用Python,你可以利用相关库,如 uuid 来获取主机的唯一ID。

  1. import uuid
  2. # 获取机器的UUID(如果支持)
  3. machine_id = str(uuid.uuid1())
  4. print(f'Machine UUID: {machine_id}')

请根据你的具体需求选择适合的方法。如果有特定的环境或需求,请提供更多信息,以便我能更准确地帮助你。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19856

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?