اگر در مورد اتصال به اینترنت برای کاربران برنامه مشکلی ندارید (یعنی محدودیت قابل قبولی هست) توصیه میکنم بری سراغ اینکه یه سایت ساده یا به عبارت درست تر وب سرویس بنویسی که صحت دسترسی کلاینت ها رو چک کن، (که می تونی خیلی راحت با php یا asp بنویسی و هیچ طراحی UI ای هم لازم نداره)
مثلا یه سریال نامبر به فرد بدی که وارد کنه داخل نرم افزار، هر بار که مجدد نرم افزار باز شد (یا هر 30 بار مثلا که این قسمت می تونه پیچیدگی ایجاد کنه) اون سریال رو به وب سرویس بفرسته، سرور هم یک جواب بهش بده که معتبر بودن سریال نامبر و تاریخ رو چک کنه
فقط مطمئنا جواب سرور یه yes/no ساده نباید باشه، چون اینجوری به راحتی دور زده می شه، کلا تبدالات اطلاعات بین سرور و نرم افزار باید به همراه کد اعتبار سنجی باشه که الگوریتم اش رو فقط خودت بدونی
مثلا نرم افزار وقتی سریال نامبر فرستاد، همراه اش یه کد هم بفرسته که با تاریخ روز و سریال نامبر ارسال شده با یه فرمول مشخص ایجاد شده، سرور هم این کد رو با تاریخ و سریال نامبر تطابق بده، اگر درست بود جواب بده
و برای اینکه نرم افزار هم گول نخوره، مشابه سرور باید همین کار رو انجام بده و اینبار نرم افزار شما اون رو چک کنه
در مورد محافظت کد هم همون net reactor. گزینه خوبیه، فقط حواست باشه، هیچ محافظتی 100 درصد نیست، وگر نه الان کرک همین net reactor. نباید وجود داشته باشه