明輝手游網(wǎng):m.79things.com

本站App下載  |  

首頁 > 電腦資訊 > 電腦知識(shí)

用注冊(cè)表給應(yīng)用程序加口令

作者:佚名   來源:本站   時(shí)間:2018-07-24  點(diǎn)擊:100次

    幾乎每個(gè)應(yīng)用系統(tǒng)都有相應(yīng)的權(quán)限管理功能。對(duì)于大型多用戶應(yīng)用系統(tǒng),一般是將權(quán)限設(shè)置保存在數(shù)據(jù)庫中。但是對(duì)于小型的單用戶應(yīng)用系統(tǒng)和非數(shù)據(jù)庫應(yīng)用系統(tǒng),就沒有必要將權(quán)限設(shè)置保存在數(shù)據(jù)庫中,但是用文件來保存既不方便又不安全,因?yàn)槲募芸赡鼙粍h除或毀壞。其實(shí),靈活地利用Windows注冊(cè)表的特點(diǎn),可以很方便地為應(yīng)用系統(tǒng)設(shè)置用戶名和口令,這種方法不但編程簡便,而且安全性比較高。下面舉例說明,該例程在Windows98,Delphi4環(huán)境下調(diào)試通過。

  設(shè)計(jì)流程為:先判斷是否為第一次使用,如果為第一次使用,則要求設(shè)置新的用戶名和口令,系統(tǒng)將用戶名和口令保存起來;如果不是第一次使用,則要求輸入用戶名和口令才能登錄。

  在Delphi開發(fā)環(huán)境中,新建一個(gè)工程Project1,在Project1中增加一個(gè)窗體Form1;在Form1上增加兩個(gè)按紐,一個(gè)為確定,另一個(gè)為取消;再在Form1上增加兩個(gè)Text框EditUser和EditPass,分別為用戶名和口令輸入框。定義窗體級(jí)全局變量RegF:TRegistry。并在interface的Uses中加上Registry。

  增加函數(shù)Wsz_IfFirst,判斷是否是第一次使用;增加過程Wsz_SaveUse,保存用戶名和口令;增加函數(shù)Wsz_CheckUser,判斷用戶名和口令是否正確。然后在Form1的FormShow事件和確定按紐事件中分別調(diào)用這三個(gè)函數(shù)和過程,達(dá)到設(shè)計(jì)要求。

  //判斷是否是第一次使用

  function Wsz_IfFirst:Boolean;

  var

  sUser:string;

  sPass:string;

  begin

  result := false;

  RegF:=TRegistry.Create;

  RegF.RootKey :=HKEY_LOCAL_MACHINE;

  RegF.OpenKey("SOFTWAREMicroSoftwhh726",TRUE);

  sUser := RegF.ReadString("user");

  sPass := RegF.ReadString("pass");

  if ((length(sUser)<=0) and (length(sPass)<=0)) then

  result := true ;

  RegF.Free;

  end;

  file://判斷用戶名和口令是否正確

  function Wsz_CheckUser(MyUser:string;MyPass :string):Boolean;

  var

  sUser:string;

  sPass:string;

  begin

  result:= false;

  RegF:=TRegistry.Create;

  RegF.RootKey :=HKEY_LOCAL_MACHINE;

  RegF.OpenKey("SOFTWAREMicroSoftwhh726",TRUE);

  sUser := RegF.ReadString("user");

  sPass := RegF.ReadString("pass");

  if (sUser=MyUser) and (sPass=MyPass) then

  result := true;

  RegF.Free;

  end;

  file://保存用戶名和口令

  procedure Wsz_SaveUser(MyUser:string;MyPass :string);

  begin

  RegF:=TRegistry.Create;

  RegF.RootKey :=HKEY_LOCAL_MACHINE;

  RegF.OpenKey("SOFTWAREMicroSoftwhh726",TRUE);

  RegF.WriteString("user",MyUser);

  RegF.WriteString("pass",MyPass);

  RegF.Free;

  end;

  file://取消按紐事件

  procedure TWszLoginForm.BitBtnCloseClick(Sender: TObject);

  begin

  Close;

  end;

  file://確定按紐事件

  procedure TWszLoginForm.BitBtnYesClick(Sender: TObject);

  var

  suser:string;

  spass:string;

  begin

  suser := trim(edituser.text);

  spass := trim(editpass.text);

  if (length(suser)<=0) or (length(spass)<=0) then

  begin

  Application.MessageBox("用戶名和口令都必須輸入!",

  "系統(tǒng)提示",

  MB_OK + MB_ICONINFORMATION);

  edituser.SetFocus ;

  exit;

  end;

  if Wsz_IfFirst then

  begin

  file://處理第一次登錄的用戶名和口令

  if Application.MessageBox(

  "您是第一次使用本軟件,請(qǐng)記住您的用戶名和口令,

  以便下次登錄,F(xiàn)在進(jìn)入系統(tǒng)嗎?",

  "系統(tǒng)提示",

  MB_OKCANCEL + MB_ICONQUESTION) = IDOK then

  begin

  file://保存

  Wsz_SaveUser(suser,spass);

  end

  else

  begin

  edituser.SetFocus ;

  exit;

  end;

  end else

  begin

  if not Wsz_CheckUser(suser,spass) then

  begin

  Application.MessageBox

  ("對(duì)不起,用戶名和口令輸入不正確!", "系統(tǒng)提示",

  MB_OK + MB_ICONINFORMATION);

  edituser.setfocus ;

  exit;

  end;

  end;

  file://全局變量

  GB_Wsz_User := suser;

  GB_Wsz_PASS := spass;

  Close;

  end;

  file://窗體的Show事件

  procedure TWszLoginForm.FormShow(Sender: TObject);

  begin

  if Wsz_IfFirst then

  begin

  Application.MessageBox(

  "您是第一次使用本軟件,您可以隨便輸入用戶名和口令。",

  "系統(tǒng)提示",

  MB_OK + MB_ICONINFORMATION);

  end;

  end;

推薦游戲

換一換