我即將爲我的應用程序實現非常基本的許可功能。序列號可以授予每臺計算機(或每個操作系統)或每個用戶(對於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