En lo personal lo he manejado con TimeSpan y Math.Round, lo que yo he hecho es tomar la fecha el la que se inicio el programa como fecha inicial y sumo los días para la fecha final, por ejemplo 15 días, guardo esta información en un XML, junto con un valor para la activacion, puede ser un serial o incluso un Si o No y al iniciar el programa checo la fecha final y saco la diferencia en día para mostrar un mensaje de días pendientes, una vez que se cumple la fecha final y no hay activación del programa se bloquea la ejecución del mismo.
Saludos..
Código VB.NET:
Ver originalDim dias As TimeSpan = DirectCast((Conversions.ToDate(fecha) - DateAndTime.Now), TimeSpan)
pendientes = CInt(Math.Round(dias.TotalDays))