如何用C语言唯一标识一台机器?

2023-12-28

我想在 C 语言中唯一标识一台机器。

以下是具有序列号的来源,但不能保证它们是唯一的或存在的(例如可移动硬盘或网卡)。

  • CPU:我正在使用cpuid然而,除 Pentium 3 之外的任何处理器都没有实现序列号,即不相关。我可以使用处理器签名,但这对于every处理器。
  • HDD: ?
  • BIOS: ?
  • 母板: ?
  • MAC地址:通过系统函数调用。

对于所有的问号,我如何获得 C 语言中的序列号? 如果您回答与系统相关的解决方案,请提供 Windows/*nix。 另外,对于 Windows,请不要使用 WMI。

Thanks!


一般来说,您需要识别组件的组合,并了解组件可以并且将会随着时间的推移而变化。您需要容差算法来做出明智的猜测,以了解更改何时代表您之前识别的机器的更新或您以前未见过的新机器。

一种简单的方法是,当您需要确定正在处理的机器并与您之前见过的机器的快照进行比较时,枚举您列出的所有组件。如果任何序列号匹配,您可以非常安全地假设您正在处理同一台机器(尽管当然有可能有人将硬盘驱动器转移到新机器......但是,这就是simple方法。商业级启发法要复杂得多。)。

使用这种专门用于软件激活的方法受到积极执行的专利的保护,因此请小心您所做的事情。如果您确实想这样做来保护您的软件,那么最好使用商业解决方案。有些是相当实惠的。谷歌“软件激活”选项。

这里有一些获取特定系统信息的参考(并非所有都是特定的 C 食谱,但每种情况都可以使用 C)。

硬盘窗口http://www.codeproject.com/KB/cs/hard_disk_serialno.aspx http://www.codeproject.com/KB/cs/hard_disk_serialno.aspx

硬盘Linuxhttp://www.webmasterworld.com/forum40/957.htm http://www.webmasterworld.com/forum40/957.htm

BIOS 窗口http://msdn.microsoft.com/en-us/library/aa394077(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/aa394077(v=vs.85).aspx

BIOS Linuxhttp://www.dufault.info/blog/a-better-way-to-find-your-bios-version-in-linux/ http://www.dufault.info/blog/a-better-way-to-find-your-bios-version-in-linux/

MAC 地址窗口C++:获取 Vista 上网络适配器的 MAC 地址? https://stackoverflow.com/questions/221894/c-get-mac-address-of-network-adapters-on-vista

MAC地址Linuxhttp://www.linuxquestions.org/questions/programming-9/linux-确定-mac-address-from-c-38217/ http://www.linuxquestions.org/questions/programming-9/linux-determining-mac-address-from-c-38217/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用C语言唯一标识一台机器? 的相关文章

  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐