2010-04-27 21 views
9

Uygulamam için çok temel bir lisanslama özelliği uygulamak üzereyim. Makine başına (veya işletim sistemi) veya kullanıcı başına bir seri numarası verilebilir (Windows Server'da CAL için olduğu gibi: Uygulamam bir makinede birkaç kullanıcı tarafından kullanılıyorsa veya birkaç kullanıcı tarafından kullanılıyorsa makineleri)..NET uygulama başına makine/kullanıcı lisansı için

  1. başına işletim sistemi lisans için, SERIALNUMBER Win32_OperatingSystem arasında kullanımı.

  2. kullanıcı başına lisans için, kullanımı:

    WindowsIdentity currentIdentity = WindowsIdentity.GetCurrent(); 
    if (currentIdentity != null) 
    { 
        SecurityIdentifier userSid = currentIdentity.User.AccountDomainSid; 
        Console.WriteLine(userSid); 
    } 
    

elde edilen bir işletim sistemi seri numarasının bir karma veya SID sonra uygulama seri ile ilişkili veri tabanında depolanır; Program her başladığında, sunucuya sorgular, OS SN/SID ve uygulama serisinin karmasını gönderir.

Bunu yapmak doğru bir şey mi yoksa tamamen yanlış mı? Her Windows makinesinde çalışacak mı? (Örneğin, using motherboard serial is wrong)

+0

Bana sesler geliyor, ben işten projelerin biri için WMI yoluyla donanım kimlikleri karmalarını kullanıyorum. Herhangi bir donanım kimliğinin biçimini almayı unutmayın - geri dönen dizelerin boşluk ve malzeme döndürmediğini varsaymak için yazılan kodun neden olduğu hataları gördüm. – anonymous

+0

Görüşlerin sayısını ve başka cevapların bulunmadığını görmek benim yaklaşımımın tamamen yanlış olmadığını sonucuna varıyorum. @Mr Roys, belki bir cevaba yorumunuzu tanıtabilirsiniz, bu yüzden kabul edebilir miyim? –

+0

Sanal ortam kullanıldığında senaryoya da bakmak isteyebilirsiniz. Hala benzersiz işletim sistemi s/n mi olur? Bunun bir cevap olmadığını biliyorum ... ama buraya yorum ekleyemedim .. –

cevap

2

Yaklaşımınızda benzer bir yaklaşım görüldüğünden, yaklaşımınızda yanlış bir şey görmüyorum - ancak makine lisanslaması için OS S/N ve donanım kimlikleri bir arada kullanıyoruz . Uygulamalarımızda kullanıcı başına bir lisanslama yok, bu yüzden gerçekten bu konuda tavsiyede bulunamıyorum.

Hataları karşılaştığınız

nerede kodu (, donanım kimlikleri, her zaman ok değildir Win32_OperatingSystem Tamam olmalı) WMI tarafından döndürülen değerler herhangi bir formatta olduğunu varsaymamalısınız gerekir unutmayın donanım kimliklerini kabul etmek, belirli bir format kabul etti ve virgül ve boşluk gibi alfasayısal olmayan karakterlerin varlığını dikkate almadı.

İlgili konular