我一直在用C#.Net winforms开发一个管理系统。 我需要通过LAN使用集中式数据库。
情境:
我必须应用一些检查,如果有人想将我的软件复制到其他计算机,他将无法在另一台计算机上运行它,因为我会给我的客户软件,他们会运行它,一切都会通过向导配置。
早期解决方法:
之前,我将本地计算机的MAC地址存储在数据库中,但问题是当我需要将多台计算机连接到同一个数据库时,每台计算机都拥有自己的MAC地址。
我的观点:
所以,我认为在第一次运行软件时我应该保存一些独特的东西,比如安装SQL Server的net_address在数据库中,这样任何客户端都可以连接到数据库,数据库应该得到SQL Server的net_address。这也导致了一个问题,当我重置我的wifi时,net_address改变了。所以SQL没有识别最后保存的net_address地址,因为它一直在不断变化。
问题:
现在我需要知道如何解决它?如果机器的MAC地址与安装它的MAC地址相同,我必须得到一些可以用来检查的独特的东西!许多想法都受到欢迎。
答案 0 :(得分:0)
关于SO的另一个问题是answer from Martin Smith(与他的评论相关联)似乎是你所需要的,但我建议不要采取这种软件保护的方式。
如果您搜索其他反盗版问题,您会发现几乎所有答案都建议不要尝试;问题,例如How to protect my application against piracy,答案以:
开头由于任何许可证执行解决方案都可以通过一些努力来解决,我建议你不要尝试......
或者Prevent piracy of desktop application which doesnt need Internet connection?,其中包含已接受的答案:
我见过的唯一一个半有效的东西就是盒装软件附带的硬件密钥。它们曾经连接到并行端口或串行端口,并在启动程序时进行检查。
用于执行此操作的AutoCad和类似程序,但对您的客户来说是 BIG PAIN 。
在软件工程网站上有另一个interesting discussion。
有一些复制保护系统可以防止大多数人复制你的软件但是想一想,如果像微软这样的人不能消除他们软件的盗版行为而他们必须投入大量资金,你认为一个简单的MAC地址检查会吗?
我感谢您努力编写软件并希望从中赚钱,但除非您是安全/加密专家,否则您可以从某处购买某些许可代码,或者不要打扰。
我意识到你正在努力防止组织内的“盗版”,但同样的问题将适用。最好是支持并信任您的客户做正确的事情,然后花费您所有的时间来节省编写更多优秀的软件,而不是浪费在无效的复制保护上。
答案 1 :(得分:-1)
我不相信有可能获得服务器的mac地址。见connect article。您可以通过select net_address from sysprocesses where spid = @@SPID