c#应用程序的良好许可策略

c#应用程序的良好许可策略,c#,licensing,mac-address,hardware-id,system-clock,C#,Licensing,Mac Address,Hardware Id,System Clock,我已经使用c#开发了一个应用程序,我希望对其应用良好且强大的许可,这样可以防止出现漏洞,并且我的客户即使更改了系统也可以续订许可 我心里没有什么疑问 1.软件许可是否可以在虚拟机上完成?如果MAC欺骗发生在虚拟机或我的客户端正在使用的任何其他系统上,我如何保护我的软件 2.如果我将客户端的MAC地址映射到我的应用程序,这对保护软件有用吗 3.硬件Id与MAC Id与串行密钥相比有哪些优势?我应该使用上面哪一项来强制我的软件获得强许可。请建议 4.如果用户更改了系统时间并反转了时钟,他可以使用我的

我已经使用c#开发了一个应用程序,我希望对其应用良好且强大的许可,这样可以防止出现漏洞,并且我的客户即使更改了系统也可以续订许可

我心里没有什么疑问

1.软件许可是否可以在虚拟机上完成?如果MAC欺骗发生在虚拟机或我的客户端正在使用的任何其他系统上,我如何保护我的软件

2.如果我将客户端的MAC地址映射到我的应用程序,这对保护软件有用吗

3.硬件Id与MAC Id与串行密钥相比有哪些优势?我应该使用上面哪一项来强制我的软件获得强许可。请建议


4.如果用户更改了系统时间并反转了时钟,他可以使用我的试用版软件,而不必购买。我如何防止这种情况发生?

您的用户不应该知道您的身份验证基于什么。 如果你害怕只依赖一个硬件组件,你可以依赖其中的几个。 例如,您可以这样使用HDD ID:

        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
        ManagementClass partionsClass = new ManagementClass("Win32_LogicalDisk");
        ManagementObjectCollection partions = partionsClass.GetInstances();  

请记住,您还需要考虑用户更改您所依赖的硬件(与网卡相关的MAC、HDD ID等)的情况。

在这种情况下会更好?@SonerGönül我没听懂您的意思。他的意思是您可以询问:我的建议:(1)购买满足您需求的第三方许可系统;这将比设计、实现、测试、调试和维护您自己的系统更便宜。(2)不要担心那些试图破坏您的许可计划的客户。如果你向公司销售产品,他们既不想承担麻烦,也不想承担法律风险。如果你向青少年销售,他们将在五分钟内击败你的许可证制度,不管它有多好。不管怎样,都没有必要担心它。这个问题似乎离题了,因为它是关于软件许可的