Tôi sắp triển khai tính năng cấp phép rất cơ bản cho ứng dụng của mình. Số sê-ri có thể được cấp cho mỗi máy (hoặc mỗi hệ điều hành) hoặc cho mỗi người dùng (đối với CAL trong Windows Server: nếu ứng dụng của tôi được nhiều người dùng sử dụng trên một máy hoặc nếu một người dùng sử dụng một số máy móc).Ứng dụng .NET cho mỗi máy/người dùng cấp phép
Đối với việc cấp phép cho mỗi hệ điều hành, tôi sử dụng serialNumber của Win32_OperatingSystem.
Đối với việc cấp phép cho mỗi người dùng, tôi sử dụng:
WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); if (currentIdentity != null) { SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; Console.WriteLine(userSid); }
Một hash của một hệ điều hành số serial thu được hoặc sau đó SID được lưu trữ trong cơ sở dữ liệu, kết hợp với ứng dụng nối tiếp; mỗi lần chương trình bắt đầu, nó truy vấn máy chủ, gửi băm của hệ điều hành SN/SID và ứng dụng nối tiếp.
Đó là điều đúng đắn để làm điều đó hay nó hoàn toàn sai? Nó sẽ hoạt động trên mọi máy Windows? (Ví dụ: using motherboard serial is wrong)
Âm thanh OK với tôi, tôi đã sử dụng băm ID phần cứng thông qua WMI cho một trong các dự án tại nơi làm việc. Hãy nhớ không giả định định dạng của bất kỳ ID phần cứng nào - Tôi đã thấy các lỗi do mã được viết để giả định rằng các chuỗi được trả lại không trả lại các khoảng trống và nội dung. – anonymous
Vâng, nhìn thấy số lượt xem và thực tế là không có câu trả lời nào khác, tôi kết luận rằng cách tiếp cận của tôi không hoàn toàn sai. @ Roy, có thể bạn có thể quảng cáo nhận xét của mình cho câu trả lời, vì vậy tôi có thể chấp nhận câu trả lời đó? –
Bạn cũng có thể xem kịch bản khi sử dụng môi trường ảo. Nó vẫn mang lại hệ điều hành duy nhất s/n? Tôi biết đây không phải là câu trả lời .. nhưng không thể thêm nhận xét ở đây .. –