原理就是軟體與序號產生器使用同一種演算法,將資料進行匹配。註冊後將資料寫入至登錄檔中。一種簡單的序號產生器的方式。
1、軟體的實現
using system;
using system.collections.generic;
using system.linq;
using system.management;
using system.text;
using system.threading.tasks;
namespace softwareregister
/// /// 獲取cpu序列號
///
///
public string getcpuserialnum()
return cpustr;
}/// /// 通過cpu序列號和硬碟序列號的前24位做機器碼
///
///
public string getmachinenum()
public int m_intcode = new int[127]; //儲存金鑰
public char m_charascii = new char[25]; //儲存ascii
public int m_intascii = new int[25]; //儲存ascii的值
/// /// 初始化金鑰(通過模9生成)
///
public void intiintcode()
}/// /// 獲取裝置註冊碼
///
///
public string getregisternum()
//通過簡單演算法,改變ascii的值, ascii的值,再加上初始化金鑰的值
for (int j = 1; j < m_intascii.length; j++)
string machineascii = "";
for (int k = 1; k < m_intascii.length; k++)
else if (m_intascii[k] > 122)
else
}return machineascii;}}
}
2、檢查註冊是否可用
using microsoft.win32;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace softwareregister
}return ischeck;
}/// /// 判斷軟體是否可用,擁有二十次的試用期,也可以換成天數,再寫入登錄檔資訊
///
///
public bool getuseinfo(ref int m_intuse)
catch (exception)
m_intuse = (int)registry.getvalue("hkey_local_machine\\software\\mysoftware", "usetimes", 0);
if (m_intuse < 5)
else
return is_canuse;}}
}
主窗體::
using microsoft.win32;
using softwareregister;
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
namespace registermachine
softreg softreg = new softreg();
checkreg checkreg = new checkreg();
private void inti()
}private void button1_click(object sender, eventargs e)
else
}catch(exception ex)
}private void but_cancel_click(object sender, eventargs e)}}
二:序號產生器
裡面的方法和上面的一樣,通過同一種演算法對資料進行匹配。
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
namespace register
public int m_intcode = new int[127]; //儲存金鑰
public char m_charascii = new char[25]; //儲存ascii
public int m_intascii = new int[25]; //儲存ascii的值
/// /// 初始化金鑰(通過模9生成)
///
public void intiintcode()
}public string getregisternum(string machinenume)
//通過簡單演算法,改變ascii的值, ascii的值,再加上初始化金鑰的值
for (int j = 1; j < m_intascii.length; j++)
string machineascii = "";
for (int k = 1; k < m_intascii.length; k++)
else if (m_intascii[k] > 122)
else
}return machineascii;
}private void but_reg_click(object sender, eventargs e)
private void btn_cancel_click(object sender, eventargs e)}}
3、再回到主介面進行註冊
C 軟體註冊功能
1 using system 2using system.collections.generic 3using system.linq 4using system.text 5using system.management 67 namespace softregister 8 22 23 24 獲...
C 生成軟體註冊碼
今天早上,花了乙個早上弄了個生成機器碼和註冊碼的demo,通過生成的註冊碼裡面包含時間資訊,保證了註冊碼在使用後的指定時間後失效 由於數學不行所以寫的比較簡單,ok 上 吧 產生機器碼的原理很簡單,基本上都是取裝置資訊之後加密 取本機機器碼 public static string getmachi...
C 生成軟體註冊碼
開發軟體時,當用到商業用途時,註冊碼與啟用碼就顯得很重要了。現在的軟體破解技術實在在強了,各種國內外大型軟體都有註冊機制,但同時也不斷地被破解。下面發的只是乙個常用版本,發出原始碼被破就更容易了,但我們學習的是技術。當然也為以後自己的軟體不會被輕易破解。第一步。根據卷標,cpu序列號,生成機器碼 取...