在VC中怎樣實現軟體的註冊機制

2021-05-02 22:14:33 字數 1633 閱讀 8155

要實現軟體註冊功能,首先需要知道實現註冊機制要涉及到的幾個問題:1、如何加入註冊檢測,判斷軟體是否註冊;2、如何生成註冊碼,如何保證乙個使用者名稱只生成與之唯一對應的註冊碼;3、在軟體不註冊情況下,如何限制軟體功能的侷限性;4、對已經負費使用使用者而言,不應造成使用不便。

首先,應該有乙個生成註冊碼的演算法,以下是我簡單的乙個生成15為註冊碼的演算法:

//該函式返回乙個cstring型別的15位註冊碼,入口引數為使用者名稱

cstring getregpasswd(cstring &dirname)

;cstring p;

int i,len;

num1=0;

num2=0;

num3=0;

len=int(strlen(dirname));

if(len!=0)

//以下把三個演算法結果分別生成5個字元,共有15個

for(i=0;i<5;i++)

sn[i]=(int)(num1+31+i*i*i)%128;

for(i=5;i<10;i++)

sn[i]=(int)(num2+31+i*i*i)%128;

for(i=10;i<15;i++)

sn[i]=(int)(num3+31+i*i*i)%128;

sn[15]=0;

//以下迴圈把所有生成的字元轉換為0---9,a---z,a----z

for(i=0;i<15;i++)

}//賦值給乙個cstring變數,用做函式返回值

p.format("%s",sn);

}return p;

}//檢查軟體是否註冊的函式

bool getregflag(void)

else

return false;

};//設定軟體已經註冊標誌的函式

bool setregflag(void)

return false;

};以上三個函式即可實現軟體註冊機制,只需要在程式初始化的時候加入以下幾句**即可

bool breg= getregflag ();

if(!breg)

如果使用者註冊只需要加入以下**即可

//這是我的程式中的乙個註冊介面,輸入使用者名稱和註冊碼提交後檢驗註冊碼是否正確的**

void cregedit::onbnclickedok()

m_regpasswd.trimleft();m_regpasswd是註冊碼

m_regpasswd.trimright();

if(m_regpasswd.isempty())

cstring passwd;

passwd=getregpasswd(m_reguser);//呼叫演算法取得該使用者名稱的註冊碼

if(passwd==m_regpasswd)//與使用者輸入的註冊進行比較

else

afxmessagebox("註冊碼錯誤,請重新輸入。");

updatedata(false);

}以上就是在vc中實現註冊機制的主要的**,把他們加入您的程式即可。程式**已在vc6.0/win98/win 2000環境中執行通過,並在實際運用中得到驗證。對已經註冊的使用者將不會有任何的障礙,只需錄入註冊碼一次就可以,不增加其日常使用的負擔;而對非法使用者的使用而言,取決於軟體的作者賦予他們的權利。

c 實現類註冊機制的方法

最近學習c 的反射機制的實現方式,想要達到僅通過使用類名的字串就能方便地拿到該類例項的方法。要做到上述的目標,顯而易見的,我們需要使用某種機制記錄這種字串儲存的類名和類例項獲取方法 函式 的對映關係。我們首先想到的就是用乙個std map資料結構去訪問這種對映關係。這個map 存貯在乙個工廠類中 這...

ATL中關於程序內伺服器註冊機制的改變

一 在atl3.0 中,是通過物件對映表來註冊伺服器。begin object map objectmap object entry clsid mycirclecollectioncreator,cmycirclecollectioncreator end object map 當 atl註冊伺服...

在VC中透明浮動按鍵的實現

有一種按鍵,看起來是一幅完整的,當 滑鼠移到按鍵區域時,的一部分凸現,形成乙個按鍵,當滑鼠移走時又恢復原來狀態。最近,看了一些關於浮動按鍵的 其原理大致上跟cbitma pbutton差不多,用數幅位圖代表按鍵的各個狀態,響應滑鼠的各種訊息來設定按鍵的狀態,實現按鍵的浮動顯示,但是這樣的按鍵卻不能和...