【发布时间】:2017-09-14 08:34:04
【问题描述】:
我想将程序绑定到特定的计算机,并且我想使用 主板的序列号作为唯一标识符。
虽然我可以找到 C# 和 Java 的一些示例,但我找不到 C++ 的任何可靠示例(我读过 WMI 可能会因硬件而失败),但肯定有办法在 C++ 中做到这一点吗?
编辑:换句话说,我想要的是一个简单而基本的许可系统。为了更清楚,下面是它的样子:
#define USER_SERIAL 123456789
double GetMotherBoardSerialNumber();
// ...
double currentSerial = GetMotherBoardSerialNumber();
if(currentSerial != USER_SERIAL) {
exit 1;
}
显然不完美,但我没有任何服务器 atm 来设置帐户系统,所以这可能是一个临时解决方案。
【问题讨论】:
-
是的,我已经阅读了那些,但正如第一个答案(关于 WMI)中提到的:“我发现检索主板的序列号可能会导致非常不同结果取决于制造商和分销渠道。"
-
@Angry Club 只生成 GUID
-
您可能还需要考虑将计算机修复为违反许可的行为会让一些客户非常沮丧。
-
@BoPersson 提出了一个很好的观点。而且这个问题越来越严重。当然让服务器启动并运行。并使用 cpuid 和 mac 地址来跟踪您的用户拥有哪些计算机,并检测被黑的帐户。
-
“我只想为特定用户编译一次。” - 如果你对你的软件很认真,你必须在你的办公室里保留调试符号对于每个版本。只需要 TB 级的存储空间来存储调试符号并不需要大量的客户。这种方法不能很好地扩展。
标签: c++ windows winapi hardware-id