我即将为我的应用程序实现一个非常基本的许可功能。序列号可以按机器(或按操作系统)或按用户授予(对于 Windows Server 中的 CAL:如果我的应用程序由一台机器上的多个用户使用,或者一个用户在多个机器上使用它)机)。
对于每个操作系统的许可,我使用Win32_OperatingSystem的SerialNumber。
对于每用户许可,我使用:
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); if (currentIdentity != null) { SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; Console.WriteLine(userSid); }
然后将获得的操作系统序列号或 SID 的哈希存储在数据库中,与应用程序序列相关联;每次程序启动时,它都会查询服务器,发送 OS SN/SID 和应用程序序列的哈希值。
这样做是正确的还是完全错误的?它可以在每台 Windows 机器上运行吗?(比如使用主板串口是错误的)