我即将为我的应用程序实现非常基本的许可功能。序列号可以授予每台计算机(或每个操作系统)或每个用户(对于Windows Server中的CAL:如果我的应用程序由多台用户在一台机器上使用,或者一台用户使用多台机)。每个机器/每个用户的.NET应用程序许可
对于每个操作系统的许可,我使用的SerialNumber的Win32_OperatingSystem。
对于每个用户的许可,我使用:
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); if (currentIdentity != null) { SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; Console.WriteLine(userSid); }
获得的OS的序列号的哈希或然后SID被存储在数据库中,与申请系列相关联;每次程序启动时,它都会查询服务器,发送OS SN/SID和应用程序序列的散列。
这是做对了还是完全错了?它可以在每台Windows机器上运行吗? (例如,using motherboard serial is wrong)
对我来说听起来不错,我一直在使用通过WMI的硬件ID散列作为工作中的一个项目。切记不要假定任何硬件ID的格式 - 我看过编写代码导致的错误,假定返回的字符串不返回空格和内容。 – anonymous 2010-04-28 03:44:53
好吧,看到观看次数和没有其他答复的事实,我得出结论说我的方法并非完全错误。 @Mr罗伊斯,也许你可以促进你的评论一个答案,所以我会能够接受它? – 2010-04-28 20:36:27
您可能还想查看使用虚拟环境的场景。它仍然会产生独特的操作系统s/n?我知道这不是一个答案..但不能在这里添加评论.. – 2010-04-29 02:59:58