2010-04-27 36 views
9

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

  1. Đố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.

  2. Đố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)

+0

Â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

+0

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 đó? –

+0

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 .. –

Trả lời

2

Tôi không thấy bất cứ điều gì sai với cách tiếp cận của bạn, vì tôi đã thấy cách tiếp cận tương tự đang được sử dụng tại nơi làm việc - tuy nhiên chúng tôi sử dụng kết hợp OS S/N và ID phần cứng . Ứng dụng của chúng tôi không có giấy phép cho mỗi người dùng, vì vậy tôi thực sự không thể tư vấn về điều đó.

Đừng lưu ý rằng bạn không nên cho rằng giá trị trả về bởi WMI là trong bất kỳ định dạng cụ thể (Win32_OperatingSystem nên OK, ID của phần cứng không phải lúc nào OK)

tôi đã gặp phải lỗi nơi mã việc chấp nhận ID phần cứng giả định định dạng cụ thể và không ảnh hưởng đến sự hiện diện của các ký tự không phải chữ và số như dấu phẩy và dấu cách.

Các vấn đề liên quan