Ara

C# Lisanslama Sorunlarına Pratik Çözümler

Birçok yazılımcı, uygulamalarını lisanslamak istediğinde çeşitli sorunlarla karşılaşabilir. Bu makalede, C# kullanarak bir lisanslama sistemi oluşturmak için bazı yöntemleri ele alacağız.

 

MAC Adresi ile Lisanslama

Aşağıdaki sınıfı kullanarak programınızı lisanslayabilirsiniz. Bilgisayarın MAC adresini alıp adress değişkenine atadıktan sonra, lisansın geçerli olacağı tarihi değişkenler içinde belirtin.

using System.Globalization;
using System.Net.NetworkInformation;
using System.Net;
using System;

public class Licence
{
    static int year = 2022, month = 11, day = 03, hour = 14, minute = 36, second = 0;
    static string adress = "macAdress";

    public static bool MacControl()
    {
        try
        {
            NetworkInterface[] pcMacler = NetworkInterface.GetAllNetworkInterfaces();
            for (int i = 0; i < pcMacler.Length; i++)
            {
                string tempMac = pcMacler[i].GetPhysicalAddress().ToString();
                if (string.IsNullOrEmpty(tempMac)) continue;

                if (tempMac == adress) return true;
            }
        }
        catch { }
        return false;
    }

    public enum NetworkState
    {
        NoConnect,
        LicenceOver,
        Success
    }

    public static NetworkState NetWorkControl()
    {
        DateTime userDateTime = new DateTime(year, month, day, hour, minute, second);
        DateTime networkDateTime = GetNistTime();

        if (networkDateTime.Year == 1)
            return NetworkState.NoConnect;
        else
        {
            TimeSpan ts = userDateTime - networkDateTime;
            if (ts.TotalSeconds > 0) return NetworkState.Success;
            else return NetworkState.LicenceOver;
        }
    }

    public static string LicenceTerm()
    {
        DateTime userDateTime = new DateTime(year, month, day, hour, minute, second);
        DateTime networkDateTime = GetNistTime();

        TimeSpan ts = userDateTime - networkDateTime;
        string licenceTerm = string.Format("Kalan Süre : {0} gün {1} saat {2} dakika", ts.Days, ts.Hours, ts.Minutes);
        return licenceTerm;
    }

    public static DateTime GetNistTime()
    {
        try
        {
            var myHttpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.google.com");
            var response = myHttpWebRequest.GetResponse();
            string todaysDates = response.Headers["date"];
            return DateTime.ParseExact(todaysDates,
                                       "ddd, dd MMM yyyy HH:mm:ss 'GMT'",
                                       CultureInfo.InvariantCulture.DateTimeFormat,
                                       DateTimeStyles.AssumeUniversal);
        }
        catch { }
        return DateTime.MinValue;
    }
}

 

Lisans Kontrolü ve Uygulama

Lisans kontrolünü yükleme olayında gerçekleştirebilirsiniz. Aşağıdaki örnek, lisans kontrolü için metodları çağırır ve lisans geçerli değilse uygulamayı kapatır.

if (!LisansIslemleri.MacControl())
{
    FormIslem.Mesaj("Lisansınız Yok!", "Lütfen lisans satın alın.");
    Application.Exit();
}

NetworkState networkState = LisansIslemleri.NetWorkControl();
if (networkState == LisansIslemleri.NetworkState.NoConnect)
{
    FormIslem.Mesaj("Bir Soru Oluştu!", "İnternete bağlanırken sorun oluştu.");
    Application.Exit();
}
else if (networkState == LisansIslemleri.NetworkState.LicenceOver)
{
    FormIslem.Mesaj("Lisansınız Bitmiştir!", "Lisansınız bitmiştir");
    Application.Exit();
}

 

Lisans Süresi Gösterimi

Kullanıcının lisans süresini görmesini sağlamak için bir buton ekleyebilir ve aşağıdaki kodu kullanabilirsiniz.

FormIslem.Mesaj("Lisans Süresi", LisansIslemleri.LicenceTerm());

 

Program Lisanslama İle İlgili Bilinmesi Gerekenler

  • Güvenliği Artırmak İçin MAC Adresi Şifreleme : MAC adresini MD5 gibi algoritmalarla şifreleyip değişkene atayarak güvenliği artırabilirsiniz. Bu yöntemle her bilgisayara lisans verildiğinde lisanslama sınıfında değişiklik yapıp programı tekrar derlemek yerine, MAC adresi ve lisans süresini şifreleyip bir dosyada saklayabilirsiniz.
  • Bilgisayar Değişikliği Durumunda Lisans Aktarımı : Kullanıcının bilgisayarının bozulması veya farklı bir bilgisayarda programı kullanmak istemesi durumunda, lisansı yeni bilgisayara tanımlarken eski bilgisayardaki lisansı iptal etmek mümkün değildir. Bu, önemli bir sorun oluşturabilir.

 

İdeal Bir Lisanslama Sistemi Nasıl Olmalıdır?

Veritabanı Kullanımı

  • Sunucu üzerinde bir veritabanı oluşturulmalı ve kullanıcı lisans bilgileri burada saklanmalıdır.
  • Lisans bilgileri, MD5 veya diğer hash algoritmalarıyla şifrelenerek veritabanına kaydedilmelidir.

 

Kullanıcı Kimlik Doğrulama

  • Her kullanıcı için kullanıcı adı ve parola oluşturulmalıdır.
  • Kullanıcılar, programa bu kimlik bilgileri ile giriş yapmalıdır.

 

Çevrimiçi Durum Kontrolü

  • Kullanıcının çevrimiçi olup olmadığı kontrol edilmelidir.
  • Bir bilgisayardan giriş yapıldığında, sistemde online görünen kullanıcı başka bir bilgisayardan giriş yapamaz.

 

Donanım Bilgileri Takibi

  • Giriş yapan kullanıcının bilgisayarın MAC adresi, işlemci, anakart ve harddisk gibi donanım aygıtlarının model veya seri numaraları kaydedilmelidir.
  • Bu bilgilerde değişiklik olduğunda kullanıcı offline olarak belirlenebilir.

 

Web API Kullanımı

  • Lisans kontrolünü, program içerisinden sunucu veritabanına bağlanarak değil, bir web API kullanarak yapmak daha güvenli olacaktır.
  • Bu şekilde, programın kaynak dosyalarına erişen kişiler veritabanı bilgilerini ele geçiremez.

 

O-Key Dongle

Lisanslama ile uğraşmak istemeyenler için O-Key Dongle, yazılımların kopyalanmasını engellemek amacıyla geliştirilmiş bir çözümdür. Bu sistemi kullanarak, lisanslama işlemlerini kolayca yönetebilirsiniz.

Bu yöntemlerle, C# programlarınızı güvenli ve etkili bir şekilde lisanslayabilirsiniz. Daha fazla bilgi ve detaylar için orijinal makaleye göz atabilirsiniz.

Author

Bilgisayar programcılığı bölümü mezunuyum. Web ve masaüstü uygulama geliştiricisiyim. C#,.Asp.Net Core, JQuery, Ajax, Entity Framework konularında bilgi sahibiyim. Bu sitenin kurucusuyum . Aynı zamanda şiir yazmayı seven birisiyim. 2023 yılında "Gökkuşağının Koyu Tonu" adlı ilk şiir kitabım yayınlandı. Yazmaya devam ediyorum.
Yorum Yap
Yorumlar (0)