Bu yazımda kendim kullanmış olduğum c#.net platformu ile lisanslama işlemini anlatmaya çalışacağım.Öncelikle lisans işlemini yapmamızın temel amacı özellikle local ve ticari yazılımlarda o programın sadece o bilgisayarda çalışmasını sağlayarak çoğaltılmasını engellemek.Bu amaçla kullanacağımız yöntem bilgisayar birimlerinden birinin seri numarası vs gibi sadece o bilgisayara ait bir değeri kendi ürettiğimiz algoritmaya sokarak programda bunun test edilmesi olacaktır.Peki bu işlem nasıl olmalı?Öncelikle hangi birimin hangi ID değerini kullanacağız buna karar vermemiz lazım.Örnek olarak bilgisayarın işlemcisini seçelim.Örneğin işlemci seri numarası fonksiyonu sonucunda dönen değer “34LL23Y24” gibi bir değer.Tabi ki bu bileşenin seri numarasının kullanıldığının tahmin edilme olasılığına karşın bir güvenlik tedbiri almamız gerekecektir.Bu konuda tabiri caizse .Net yapısının bize sunmuş olduğu “using System.Security.Cryptography;” yapısı bizim için veli nimettir.Bu namespace’yi sistemimize tanımladıktan sonra elde ettiğimiz değeri bu namespace sayesinde bir MD5 şifreleme algoritmasına sokarak “e41513456b657f50bdd95d5d1ed9d74cd” şeklinde bir değer elde edebiliriz.Bundan sonrası ise yöntemimize bağlı.İster bir ini dosyasına kaydedip ordan değer okuyabiliriz ister txt dosyasına kaydedip ordan okuyabiliriz bu tercihimize kalmış bir durum.Şimdi benim tercihim olan ini dosyası yöntemi ile olan kodlamayı sizinle paylaşacağım.Çalışma mantığını elimden geldiğince anlatmaya çalıştım.Umarım faydası olur.//İşlemci Seri Numarası Fonksiyonupublic static string CPUId(){string cpuId = null;var theClass = new System.Management.ManagementClass(“Win32_Processor”);var theCollectionOfResults = theClass.GetInstances();foreach (System.Management.ManagementObject r in theCollectionOfResults){cpuId += r[“ProcessorID”].ToString();}return cpuId;}//MD5 Şifreleme Algoritması Fonksiyonupublic string MD5Donustur(string deger){byte[] byteData = Encoding.ASCII.GetBytes(deger);MD5 oMD5 = MD5.Create();byte[] hashVeri= oMD5.ComputeHash(byteData);StringBuilder stb = new StringBuilder();for (int i = 0; i < hashVeri.Length; i++){stb .Append(hashVeri[i].ToString("x2"));}return stb .ToString();}//Inı Dosyasına Yazma ve Okuma İşlemleripublic class IniFiles{string iniDosya = "";[DllImport("kernel32")]private static extern long WritePrivateProfileString(string sekme, string anahtar, string deger, string inidosya);[DllImport("kernel32")]private static extern int GetPrivateProfileString(string sekme, string anahtar, string def, StringBuilder retVal, int size, string inidosya);public IniFiles(){}public string iniOku(string sekme, string anahtar){StringBuilder anahtarDeger = new StringBuilder(255);GetPrivateProfileString(sekme, anahtar,"", anahtarDeger, 255, iniDosya);return anahtarDeger.ToString();}public void iniYaz(string sekme, string anahtar, string deger){WritePrivateProfileString(sekme, anahtar, deger, iniDosya);}public string iniFile{get {return iniDosya;}set { iniDosya = value; }}}//Program açılışında kontrolü ise ;lisans.iniFile=Environment.CurrentDirectory + "\lisans.ini";txtKullaniciNo.Text = CPUId();string serial=lisans.iniOku("Properties", "CommandValue");if (serial==MD5Donustur(txtKullaniciNo.Text)){txtLisans.Text="BU PROGRAM LİSANSLIDIR.";btnLisanslar.Enabled=false;lisansDemo.Demo=false;}else{lisansDemo.Demo=true;txtLisans.SelectAll();txtLisans.Focus();}şeklinde yapılabilir.