熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows系統管理 >> 正文

運用注冊表給系統應用程序加口令

2022-06-13   來源: Windows系統管理 

  幾乎每個應用系統都有相應的權限管理功能對於大型多用戶應用系統一般是將權限設置保存在數據庫中但是對於小型的單用戶應用系統和非數據庫應用系統就沒有必要將權限設置保存在數據庫中但是用文件來保存既不方便又不安全因為文件很可能被刪除或毀壞其實靈活地利用Windows注冊表的特點可以很方便地為應用系統設置用戶名和口令這種方法不但編程簡便而且安全性比較高下面舉例說明該例程在WindowsDelphi環境下調試通過
  
  設計流程為先判斷是否為第一次使用如果為第一次使用則要求設置新的用戶名和口令系統將用戶名和口令保存起來如果不是第一次使用則要求輸入用戶名和口令才能登錄
  
  在Delphi開發環境中新建一個工程Project在Project中增加一個窗體Form在Form上增加兩個按紐一個為確定另一個為取消再在Form上增加兩個Text框EditUser和EditPass分別為用戶名和口令輸入框定義窗體級全局變量RegF:TRegistry並在interface的Uses中加上Registry
  
  增加函數Wsz_IfFirst判斷是否是第一次使用增加過程Wsz_SaveUse保存用戶名和口令增加函數Wsz_CheckUser判斷用戶名和口令是否正確然後在Form的FormShow事件和確定按紐事件中分別調用這三個函數和過程達到設計要求
  
  //判斷是否是第一次使用
  
  function Wsz_IfFirst:Boolean;
  
  var
  
  sUser:string;
  
  sPass:string;
  
  begin
  
  result := false;
  
  RegF:=TRegistryCreate;
  
  RegFRootKey :=HKEY_LOCAL_MACHINE;
  
  RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE);
  
  sUser := RegFReadString(user);
  
  sPass := RegFReadString(pass);
  
  if ((length(sUser)=) and (length(sPass)=)) then
  
  result := true ;
  
  RegFFree;
  
  end;
  
  file://判斷用戶名和口令是否正確
  
  function Wsz_CheckUser(MyUser:string;MyPass :string):Boolean;
  
  var
  
  sUser:string;
  
  sPass:string;
  
  begin
  
  result:= false;
  
  RegF:=TRegistryCreate;
  
  RegFRootKey :=HKEY_LOCAL_MACHINE;
  
  RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE);
  
  sUser := RegFReadString(user);
  
  sPass := RegFReadString(pass);
  
  if (sUser=MyUser) and (sPass=MyPass) then
  
  result := true;
  
  RegFFree;
  
  end;
  
  file://保存用戶名和口令
  
  procedure Wsz_SaveUser(MyUser:string;MyPass :string);
  
  begin
  
  RegF:=TRegistryCreate;
  
  RegFRootKey :=HKEY_LOCAL_MACHINE;
  
  RegFOpenKey(SOFTWARE\MicroSoft\whhTRUE);
  
  RegFWriteString(userMyUser);
  
  RegFWriteString(passMyPass);
  
  RegFFree;
  
  end;
  
  file://取消按紐事件
  
  procedure TWszLoginFormBitBtnCloseClick(Sender: TObject);
  
  begin
  
  Close;
  
  end;
  
  file://確定按紐事件
  
  procedure TWszLoginFormBitBtnYesClick(Sender: TObject);
  
  var
  
  suser:string;
  
  spass:string;
  
  begin
  
  suser := trim(editusertext);
  
  spass := trim(editpasstext);
  
  if (length(suser)=) or (length(spass)=) then
  
  begin
  
  ApplicationMessageBox(用戶名和口令都必須輸入!
  
  系統提示
  
  MB_OK + MB_ICONINFORMATION);
  
  edituserSetFocus ;
  
  exit;
  
  end;
  
  if Wsz_IfFirst then
  
  begin
  
  file://處理第一次登錄的用戶名和口令
  
  if ApplicationMessageBox(
  
  您是第一次使用本軟件請記住您的用戶名和口令
  
  以便下次登錄現在進入系統嗎?
  
  系統提示
  
  MB_OKCANCEL + MB_ICONQUESTION) = IDOK then
  
  begin
  
  file://保存
  
  Wsz_SaveUser(suserspass);
  
  end
  
  else
  
  begin
  
  edituserSetFocus ;
  
  exit;
  
  end;
  
  end else
  
  begin
  
  if not Wsz_CheckUser(suserspass) then
  
  begin
  
  ApplicationMessageBox
  
  (對不起用戶名和口令輸入不正確! 系統提示
  
  MB_OK + MB_ICONINFORMATION);
  
  editusersetfocus ;
  
  exit;
  
  end;
  
  end;
  
  file://全局變量
  
  GB_Wsz_User := suser;
  
  GB_Wsz_PASS := spass;
  
  Close;
  
  end;
  
  file://窗體的Show事件
  
  procedure TWszLoginFormFormShow(Sender: TObject);
  
  begin
  
  if Wsz_IfFirst then
  
  begin
  
  ApplicationMessageBox(
  
  您是第一次使用本軟件您可以隨便輸入用戶名和口令
  
  系統提示
  
  MB_OK + MB_ICONINFORMATION);
  
  end;
  
  end;
  


From:http://tw.wingwit.com/Article/os/xtgl/201405/30895.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.