Ich habe sowas mal über den Server gemacht. Bei mehreren Servern gibt es dann für jeden Server einen eigenen Lizenzschlüssel, der dann in das Feld Lizenzschlüssel (Mehrfachwert) eingetragen werden kann. Darin war auch das Ablaufdatum verschlüsselt.
Also, beim Check wird jeder Lizenzschlüssel mittels Servernamen entschlüsselt, passt einer und das Datum ist noch gültig, prima, sonst weitersuchen. Kein gültiger Schlüssel, keine Ausführung des Codes.
Wie man mit lokalen Datenbanken umgeht, müsste man prüfen. In meinem Fall war vor allem ein periodischer Agent geschützt und der Großteil der restlichen Anwendung offen, so hatte ich kein Problem mit lokalen Datenbanken.
Vorstellbar wäre auch, die Organisation des Users als Grundlage zu nehmen.