簡體   English   中英

程序中嵌入的C#序列號

[英]C# Serial Number Embedded within Program

我正在為我寫的軟件編寫自己的序列號驗證/保護。

假設序列號驗證器正在使用模式匹配...一旦驗證了序列號,我該如何更改程序本身,以便它不再詢問用戶序列號?

我真的不想創建一個單獨的許可證文件。 有沒有辦法將其嵌入程序本身? 或者注冊表是唯一的其他選項(除了在線驗證等)

你真的不應該試圖編輯程序本身-它會打破簽名/強命名的exe / dll文件幾乎肯定會被鎖定,即使你影副本:許多用戶沒有權限修改它在程序文件中(或單擊一次)。

外部設備(例如許可證文件或注冊表設置)似乎是合適的(除非您希望在每個客戶端的服務器上構建應用程序)。

有沒有辦法將其嵌入程序本身?

如果你暗示要修改程序集,那么它可能是*,你需要有兩個程序集 - 一個正在執行的程序集和一個你正在修改的程序集 - 因為正在執行的程序集將被文件系統鎖定。 而且您需要預留足夠的空間來存儲您打算注入的任何新值。

* 為了證明這一點,我創建了一個小的可執行文件,只是簡單地寫了一個字符串的值,並使用十六進制編輯器來改變字符串的值。

但是,您需要對所做的更改非常聰明,否則注冊軟件然后只需將修改后的二進制文件復制到其他計算機就會繞過您的注冊過程。

在注冊表中存儲注冊詳細信息可能是一個更容易的解決方案。

我個人總是從機器硬件生成一個唯一的密鑰,並將其存儲在注冊表中。

下面是一個唯一密鑰的簡單示例,但如果您需要為不同版本的軟件使用單獨的密鑰,則可能需要對其進行擴展。

http://www.vcskicks.com/hardware_id.php

您可以將輸入的序列密鑰保存到文件或注冊表中,並在用戶啟動應用程序時對其進行身份驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM