Come creare un software con scadenza in C#

Come creare un software con scadenza in C#

Come creare un software con scadenza in C#: Tutorial sulla creazione di un software con scadenza utilizzando C# e WinForms.

Come creare un software con scadenza in C#

Riprendiamo i tutorial sulla programmazione in C# con una richiesta ricevuta ormai quasi 1 anno fa, come creare un software che dopo una scadenza non permetta più all’utente di utilizzarlo.

In questo tutorial vedremo 2 esempi di scadenze e due esempi di blocchi.

Vedremo come creare una scadenza in base alla data, quindi permettere all’utente di utilizzare il software per un determinato numero di giorni. e vedremo come creare un software con scadenza in base al numero di utilizzi.

Inoltre per il blocco, vedremo nel primo caso un blocco totale del programma, quindi alla scadenza verrà mostrato un messaggio ed il software verrà chiuso.

Nel secondo caso invece il software continuerà a funzionare ma alcune funzioni saranno limitate o non accessibili.

Premessa

I metodi che vedremo in questo tutorial sono da considerarsi di livello base, facilmente aggirabili da un utente con conoscenze informatiche, non sono quindi da intendersi completi e adatti ad un utilizzo per un software commerciale.

Sono un punto di partenza per sviluppare poi il proprio sistema di blocco, alcuni consigli su come farlo li aggiungerò nel paragrafo Conclusioni a fine articolo.

Come iniziare

Per cominciare creiamo un nuovo progetto in Visual Studio e selezioniamo WinForms.

Nel tutorial ho utilizzato il framework .NET 9.0 ma il codice utilizzato non è vincolato a questo framework, quindi se utilizzate anche framework precedenti non ci saranno problemi.

Inseriamo 3 button ed assegniamo come nomi:

  • btnApri
  • btnSalva
  • btnEsci

Quindi aggiungiamo una StatusStrip e alla StatusStrip una Label che rinomineremo in:

  • lblScadenza

Queste impostazioni saranno uguali per entrambi i progetti.

Metodo 1 – Data di Scadenza

Questo metodo prevede 3 impostazioni:

  • Data installazione
  • Data utilizzo
  • Data scadenza

Queste 3 impostazioni saranno utili per verificare quando l’utente ha installato il software, l’ultima volta che lo ha utilizzato e quale giorno sarà l’ultimo in cui potrà utilizzarlo.

Per aggiungere queste Impostazioni, facciamo click con il tasto destro del mouse sul progetto (o clicchiamo sul menù Progetto), quindi clicchiamo su Proprietà (o dal menù sulla voce Proprietà Progetto).

Clicchiamo quindi su Impostazioni poi su crea o apri le impostazioni dell’applicazione.

Creiamo 3 impostazioni di tipo string:

  • DataInstallazione
  • DataUltimoUtilizzo
  • DataScadenza

Lasciamo i valori vuoti e torniamo al Form.

Facciamo doppio click sul Form per andare al codice relativo al caricamento del Form, che dovrebbe essere Form1_Load.

Quello che dovremo fare è creare un codice che andrà a prendere la data attuale, aggiungerà a questa data il numero di giorni che vogliamo consentire all’utente (nell’esempio 15 giorni).

Quindi andrà a verificare se la data dell’ultimo utilizzo è antecedente alla data di scadenza, se lo è avvierà il software, altrimenti mostrerà il messaggio di blocco.

Ecco il codice completo:

 private void Form1_Load(object sender, EventArgs e)
 {
     ControlloDataScadenza();
 }

private void ControlloDataScadenza()
{
    DateTime dataAttuale = DateTime.Now;
    if (Settings.Default.DataInstallazione == "")
    {
        DateTime dataScadenza = dataAttuale.AddDays(15);
        Settings.Default.DataInstallazione = dataAttuale.ToString("yyyyMMdd");
        Settings.Default.DataUltimoUtilizzo = dataAttuale.ToString("yyyyMMdd");
        Settings.Default.DataScadenza = dataScadenza.ToString("yyyyMMdd");
        Settings.Default.Save();
    }
    else
    {
        Settings.Default.DataUltimoUtilizzo = dataAttuale.ToString("yyyyMMdd");
        Settings.Default.Save();        
        int DataUltimoUtilizzo = 0;
        bool ConversioneDataUltimoUtilizzo = int.TryParse(Settings.Default.DataUltimoUtilizzo, out DataUltimoUtilizzo);
        int DataScadenza = 0;
        bool ConversioneDataScadenza = int.TryParse(Settings.Default.DataScadenza, out DataScadenza);
        lblScadenza.Text = dataAttuale.ToString("dd/MM/yyyy");
        if (DataUltimoUtilizzo > DataScadenza)
        {
            DisattivaSoftware();
        }
    }
}

private void DisattivaSoftware()
{
    MessageBox.Show("Hai superato la data di scadenza, per continuare acquista il software.");
    this.Close();
}

In questo esempio vediamo 2 metodi:

  • ControlloDataScadenza()
  • DisattivaSoftware()

Il primo metodo viene avviato all’avvio del Form, verifica la data e se ancora valida permette di utilizzare il software.

Se la data non dovesse essere più valida verrà eseguito il metodo DisattivaSoftware() che mostra un messaggio ed esce dall’applicazione.

Metodo 2 – Numero utilizzi

In questo secondo metodo, permetteremo agli utenti di utilizzare il software per un massimo di 5 volte prima di disattivare il tasto relativo al salvataggio.

Quindi il software potrà essere utilizzato per un numero illimitato di volte, ma non sarà possibile salvare.

Per questo metodo aggiungiamo 2 nuovi valori nelle Impostazioni (il primo con valore 0 ed il secondo con valore 5 o con il limite di utilizzi che vogliamo dare all’utente):

  • NumeroDiUtilizzi
  • LimiteUtilizzi

Ecco il codice completo:

private void Form1_Load(object sender, EventArgs e)
{
    ControlloNumeroUtilizzi();
}

private void ControlloNumeroUtilizzi()
{
    int NumeroUtilizzi = Settings.Default.NumeroDiUtilizzi + 1;
    int UtilizziTotali = Settings.Default.LimiteUtilizzi;
    Settings.Default.NumeroDiUtilizzi = NumeroUtilizzi;
    Settings.Default.Save();
    lblScadenza.Text = "Utilizzi:" + NumeroUtilizzi.ToString() + "/" + UtilizziTotali.ToString();
    if (NumeroUtilizzi > UtilizziTotali)
    {
        DisattivaFunzioniSoftware();
    }
}
private void DisattivaFunzioniSoftware()
{
    btnSalva.Enabled = false;
}

Anche in questo esempio utilizzeremo 2 metodi:

  • ControlloNumeroUtilizzi();
  • DisattivaFunzioniSoftware();

Il primo metodo viene caricato all’apertura del Form, ed incrementa il numero di utilizzi ad ogni avvio, quindi verifica che non siano stati superati gli utilizzi totali.

Il secondo metodo disattiva il tasto Salva nel caso in cui siano stati superati gli utilizzi concessi.

Conclusioni

Questi 2 metodi, sono dei metodi semplici per aggiungere funzionalità di blocco e limitazioni ai propri software.

Come anticipato non sono metodi sicuri perchè facilmente aggirabili, alcuni metodi per renderli più sicuri includono:

  • La verifica della data tramite server e non dal sistema dell’utente
  • Crittografia dei dati salvati nelle impostazioni
  • Verifica del cambio di data sul sistema dell’utente rispetto ad una data presente online

Video

Scopri di più da ClaudioMasci

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continua a leggere