İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp
  3. C# Lisanslama Sistemi – C# Program Lisanslama

C# Lisanslama Sistemi – C# Program Lisanslama

Bu dersimizde her proje geliştiren yazılımcıların merak ettiği ve türlü türlü sıkıntılar çektiği bir konudur. Elbette bende bu konuda çok sıkıntılar çektim. Birçok lisanslama yöntemi denedim ve neredeyse denediğim kadar başarısız oldum

C# Lisanslama Sistemi - C# Program Lisanslama

Merhabalar, c# Lisanslama Sistemi – C# Program Lisanslama dersi ile C# eğitim setime devam ediyorum. Bu dersimizde her proje geliştiren yazılımcıların merak ettiği ve türlü türlü sıkıntılar çektiği bir konudur. Elbette bende bu konuda çok sıkıntılar çektim. Birçok lisanslama yöntemi denedim ve neredeyse denediğim kadar başarısız oldum

Elbette bu başarısızlık lisanların birileri tarafından kırılması değil. Dünyadaki ya da en azından Türkiye’deki bilgisayar hatta daha da doğrusu cihaz çeşitliliğini düşündüğümüzde yazılımcıların aklına gelen ilk birkaç lisanslama yöntemi başarısızlıkla sonuçlanıyor. Bu yazının konusu da benim yaşadığım başarısızlıklar ve sonunda başarıya nasıl ulaştığımdır. Bu yazıda C# Program Lisanslama hakkında bir kaç c# lisanslama örneği yer almaktadır.

C# Lisanslama Sistemi – C# Program Lisanslama

C# Lisanslama Sistemi

Yazılımla ilgilenenlerin geliştirdikleri bir c# uygulama lisanslama istemesi çok mantıklı bir karardır. Belki yıllarca emek verdikleri projelerini belirli bir ücret karşılığında sattıkları için elbette ücretini ödemeyenler tarafından kullanılmasını istemeyeceklerdir.

Bunu kim ister ki?

Şu anda piyasa işlerimizi kolaylaştıran neredeyse tüm uygulamaların belirli bir ücreti vardır. Belki yıllık ödeme modeli belki de tek seferlik ödeme yolu ile satışa sunulurlar. Bazı uygulamaların bir kısım özellikleri ücretsiz sunulurken en can alıcı özelliklerinin ücretli satılması gibi birçok ücret modeli vardır.

İnternette araştırmalar yaparsanız “Programımız asla kırılamaz” diye iddia edilen tüm programların en geç bir hafta içerisinde kırıldığını görebilirsiniz. Yani demek istediğim kırılmak istenirse kırılmayacak bir program yoktur diye cesur bir iddia da bulunabiliriz bence.

Şimdi asıl konumuza gelelim ve bir projenin kırılmasına değil nasıl lisanslanacağı hakkında konuşmaya başlayalım.

Aşağıda bahsedeceğim konular lisanslama ve proje her açıldığında lisansın kontrol edilmesi ve lisans doğru ile çalışmaya devam etmesi konuludur. Lisanslamanın yöntemini ve o yöntemin sorunlarını açıklayacağım. En sorunsuz yöntemi yazının sonunda vereceğim.

C# Lisanslama Sistemi

 

Bilgisayar Parça Bilgileri İle Uygulama Lisanslama Örneği

Yazılımcıların genellikle aklına ilk gelen yöntem budur. Bilgisayardaki HDD, İşlemci gibi parçaların ID numaralarını alarak lisanslama girişiminde bulunurlar. Söylemeliyim ki bunu bende birçok projemde uygulamıştım.

Hatta kırılmasının (kendimce) imkânsız hale gelmesi için HDD, İşlemci, MAC Adresi ile birlikte geliştirdiğim uygulamanın satıldığı tarihinin üzerinde çeşitli matematiksel işlemler yaparak ve ek olarak kafamdan sıktığım birkaç harf öbeği (Örn ASDKF ) ile harmanlamıştım.

Projelerimde ilk 6 ay boyunca bir sorun çıkmamıştı. Sonradan sorunlar yaşanmaya başladı. Neden sorun çıkıyor diye yaptığım araştırmalar sonucunda sorunların neden çıktığını çözdüm.

Sorun 1:

Bilgisayar Parçalarının Değişmesi: ID’si alınan bilgisayarların parçaları değiştiğinde doğal olarak ID’si değişiyor. Aynı marka ve model parça alınsa bile ID’ler asla aynı olmuyor.

Sorun 2:

HDD ID Sorunu:  Bilgisayara yeni bir HDD takılması. Bilgisayarda HDD listesi alınmak istendiğinde bir döngü ile mevcut HDD listesi alınarak ID numarası elde edilir. Yeni takılan HDD bu alınan listede ilk sırada geliyor olması lisans çözümlemesinde sorun çıkartıyor. Çünkü Lisanstaki HDD ID’si eski HDD’nin ID’si olduğundan dolayı ve yeni takılan HDD’nin ilk sırada dönmesi sebebi ile alınan HDD ID’si lisanstaki ID ile uyuşmuyor.

Sorun 3:

İşlemci ID Sorunu: Biliyorsunuz işlemciler artık iki çekirdek, dört çekirdek gibi farklı çekirdeklere sahip olarak üretiliyor. Tahmin edersiniz ki her çekirdeğin ID’si de farklı oluyor. Lisanlama anında uygulamanın çalıştığı çekirdeğin ID’si alındığından, uygulama başka bir çekirdekte çalıştırılmaya çalışıldığında alından ID farklı olduğundan lisans doğrulanamıyor.

Sorun 4:

Mac Adresinin Değişmesi: Ben lisedeyken, öğretmenlerimiz bize ethernet kartlarının MAC adreslerinin asla değişmeyeceğini söylerdi. Tabi bunun daha sonra yanlış olduğunu anladım. Özellikle MAC adresi değiştiren uygulamaların yanı bazı uygulamalarda MAC adreslerini değiştirebiliyor. Hatta kendi kendine değişen MAC adresine bile şahit oldum. Nasıl olduğunu anlamadığım bir şekilde bir müşterimin MAC adresi değişmişti.

Bu sorunlar sıklıkla karşılaşacağınız sorunlar arasındadır. Bu sebeple bu yöntem geçersizdir. Belki yıllarca bu sorunlarla karşılaşmadınız ancak gelecekte karşılaşmayacağınız anlamına gelmez.

Buna ek olarak müşterini bilgisayarının işlemci, HDD ve Ethernet kartını çeşitli sebepler yüzünden değiştirmek zorunda kalabilir. Müşterilerinizin tekrar tekrar lisans sorunu ile uğraşmayı şahsen hiç istemem. Bir kere lisans vereyim olsun bitsin. Tabi bazı yazılımcıların bu durum hoşuna gidebilir. Her lisanslama da ücret alıyorsa ne kadar da tatlı bir sorun olur değil mi? Bu yöntemi asla ve asla tasvip etmiyorum. Sürekli sürekli müşterilerle yüzgöz olmaya gerek yok bence.

Regedit Kullanarak Uygulama Lisanslama Örneği

Burası başlı başına bir sorun zaten. En basit olarak bilgisayarın formatlanması veya Regeditten anlamayan kişilerin kurcalamaları yüzünden lisans uçabilir. Bu kısmı fazla açıklamaya gerek yok. Düşünmeyin bile derim ben. Uğraşıyorsanız yol yakınken vazgeçin. Zararın neresinden dönerseniz kardır.

İnternet Üzerinden Lisanslama Örneği

Bu konu üzerine de çok konuşmaya gerek yoktur. Her seferinde internetten lisans kontrol ettirmek sıkıntıdır. Uygulamanızın türüne göre, kurulan bilgisayarda internet olmayabilir. Bu da sorun demektir. İnternetten kontrol ettirmekte bir çözüm olmuyor maalesef.

Uygulamanın kurulduğu bilgisayarda internet olsa bile, internetin gittiği durumlarda düşülmelidir. Müşteri o anda internet olmayan bir konumda olabilir, internet hızı çok düşük olabilir, telefonundaki interneti kullanmak istese de telefonu çekmiyor olabilir, faturasını ödememiş olabilir, taşınması dolayısı ile interneti olmayabilir, yakın çevresinde alt yapı çalışması olabilir vs. vs. sebepleri düşünülmelidir. Neredeyse her tür uygulamanın muadilinin olduğunu düşünürsek müşterinin sizi bırakmasına neden olabilirsiniz.

Şimdi gelelim (şahsen) doğru yönteme…

 

Doğru Lisanslama Sistemi Örneği

C# uygulama lisans deyince aklınıza ASDFG-GHJKL-12345 şeklinde bir format gelmesine gerek yok. Yani illa böyle lisans kod formatı yapmak zorunda değilsiniz.

Lisans kodu üretirken bilgisayar üzerindeki bir parçanın ya da yazılımın ID gibi değerlerini kullanmayın. Bunların hepsi değişebilir. En basitinden adam yeni sürüm işletim sistemli yeni bilgisayar alabilir.

Lisans kodunu oluşturacak verileri maddeler haline vermek istiyorum. Maddelerden sonra bu lisans kodunu nasıl kullanacağımızı da anlatacağım. İşte şahsen en doğru C# lisanslama sistemi

  1. Yeni lisanslama modellerini dikkate aldığımızda kullanıcı sayısının da ek ücrete tabi olduğunu söylemem gerekir. Programın ücretinin yanı sıra programı kullanacak kullanıcı başı da ücret alınır. Bu düşünüldüğünde lisan içerisinde yer alması gereken ilk değeri elde ediyoruz. Lisan kodunuzun içerisinde programı aynı anda kullanabilecek kullanıcı sayısını ekleyebiliriz.
  2. Müşteriye programı sattığınız tarihi ve verilen lisansın süresini ekleyebilirsiniz. Sonuçta yeni lisans modelinde programın bir kere satılması değil, satıldıktan sonra da yıllık kullanım ücreti talep etmek vardır.
    1. Örneğin program normalde 10.000 TL dir. Bu fiyatı 3500 TL’ye çekerler ilk satış için. Satış yapıldıktan sonra yıllık olarak da 1.000 TL kullanım ve destek ücreti isterler. Bu durumda lisans koduna bitiş tarihinin lisans içerisinde yer alması normal olarak düşünülebilir.
  3. Uygulamanız birden fazla modül içeriyorsa, yani yukarıda bahsettiğim gibi basit özelliklerin ücretsiz, birkaç farklı özelliğin ücretli ve daha fazla özelliğin daha çok ücretli olması gibi durumu varsa, lisans kodunuza uygulamanın satış türü hakkında bilgi ekleyebilirsiniz. Örneğin Free, Semi-Pro, Pro gibi…
  4. Uygulamanız için daha farklı bir kavram var ise o kavramı temsil edecek bir ifadeyi de lisans kodunuza ekleyebilirsiniz. Tabi ki bunda bir sınır yok. İstediğiniz kadar bilgiyi aralarında bir ayraç koyarak uç uça ekleyin gitsin.

Evet, lisans kodu nasıl üretilir? C# süreli lisans nasıl verilir? Sorusuna cevap verdik. Zaten anlamışsınızdır ama şimdi bu lisans kodunu nasıl kullanacağımıza geçelim.

C# Lisanslama Sistemi İnceleyelim

Yukarıdaki lisanslama sistemine göre üretilen lisans kodu takribi şöyle bir görüntüsü olması gerekiyor.

10-13.06.2021-PRO-INTERNETLI

10-13.06.2099-FREE-INTERNETSIZ

Şimdi lisans kodlarını yorumlayalım.

Programımızı aynı anda 10 kişi kullanabilir. Lisans süresi 13.06.2021 tarihinde sona erecek. Program PRO sürümü olarak satılmış. Program sadece internet üzerinden çalışabilir.

Programımızı aynı anda 10 kişi kullanabilir. Lisans süresi belirtilememiş. Program FREE sürümü olarak satılmış. Program sadece internet üzerinden çalışamaz.

Elbette lisans kodlarını böyle açık açık saklamayacağız. Yoksa bir anlamı kalmaz. Programı kullanan kişilerin bu verilerin ne anlama geldiğini anlaması demek istediği gibi hükmetmesi demek olur.

Bu noktada işin içine bir şifreleme yöntemi giriyor. Bu şifreleme konusunu ister AES, HASH vs. hazır algoritmaları kullanın isterseniz kafanızda bir şifreleme yöntemi oluşturun.

Mesela karakterlerin ASCII sayısal tablosundaki numarasını alıp beş ile çarpıp art beş ekleme gibi bir formül geliştirebilirsiniz. Bilindik algoritmaları kullanın ve ya kendi formülünüzü üretin diye bir şey diyemem. Canınız hangisini istiyorsa onu kullanın.

Ama şunu söylemeliyim ki kendi kafanızda ürettiğiniz şifreleme formülleri mesela bir AES kadar zor olmayabilir. Diğer yandan AES gibi diğer şifreleme yöntemleri de işini bilen biri tarafından da çözümlenebilir. Bir diğer taraftan birileri neden sizin uygulamanızı kırmak için uğraşsın gibi gibi sorularda vardır. Elbette hangi yöntemi kullanacağınız sizin bileceğiniz bir iş.

C# Program Lisanslama

Ben uygulamalarımda 1024 bitlik RSA Şifreleme yöntemi kullanıyorum. Çözülmesi için yıllar gereken zorlukta bir şifreleme yöntemidir. Sitemde RSA şifreleme hakkında da ders yer almaktadır. Bağlantıdan ulaşabilirsiniz.


C# Lisanslama Sistemi – C# Program Lisanslama dersimde bu kadardı arkadaşlar diğer derslerimizde görüşmek üzere…

Beni takip eden arkadaşlar fark etmiştir. Sitemin tasarımını sonunda değiştirebildim. Bu tasarım eski tasarıma göre muazzam bir tema. Umarım bu temayı beğenmişsinizdir. 🙂

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme bu bağlantıdan ulaşabilirsiniz…

Sağlıcakla ve takipte kalın. 😉

Yorum Yap

Yazar Hakkında

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım. Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir. Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

Yorum Yap