La soluzione di Oregon mi sembra l'ideale.
Praticamente non devi fare altro che mettere sul sito (magari nascosta e non navigabile) una pagina web contenente una tabella con tutti i dati che ti servono (ovviamente la tabella andrà creata dinamicamente prendendo i dati dal tuo DB web), poi, usando una WebRequest (è la soluzione più veloce) leggi la tabella dal programma e controlli che tutto sia in ordine.
Però questa idea mi solleva un dubbio:
Se il programma non può connettersi al web che succede?
Non penso sia il caso di bloccarlo altrimenti impedisci l'utilizzo anche nel periodo di validità ma, d'altra parte, succede che basta non farlo collegare perché duri all'infinito.