www.138139.cn

返回总目录 上一页 目录页 下一页

在VB中用注册表给程序加口令


    在WINDOWS横行的年代,微软公司建议程序设计师,别在使用“INI”啦!请使用我们发明的新玩意,“REGISTRY”(系统登录区)。“REGISTRY” 所采用的是中央集权的管理办法,把所有程序的必要信息,统一放在一层次式数据庫里,程序员可以程序结束之前,把需记录的信息以字段的形式写入“REGISTRY”,当下次程序启动时,将数据从“REGISTRY”中读出来。
要存取“REGISTRY”,必须先知道“REGISTRY”是什么样子。大家可在WINDOWS“运行”菜单中鍵入“REGEDIT”,启动登录编辑器一看便知。
言归正传,在VB中,我们要对注册表操作时有两种方法。
1、调用API函数。
2、用VB自己提供的几个函数。
我今天讲的就第2种方法。在VB中提供了四个用于注册表进行读写操作的函数:
GetSetting,SaveSetting,deletesetting和GetAllSettings,其中前三个用的最多。
当我们以Visual Basic中存取Registry的机制保存主銉时,VB会把所保存的主鍵安置在
   “KEY_CURRENT_USER\Software\Vb and VBA Program Settings\"之下,换言之,这个   字段是专门给VB程序员使用的。











  其实我的思路很简单。我把所要存储的密码放在注册表中,在程序启动时自动要求身份验证。






在工具箱中取出两个LINE控件,两个TEXTBOX控件,三个LALEL和两个COMMANDBUTTON,依下面的图摆放。
设置如下:
Form Name  frmlogin
Caption  login
Keypreview  True
CommandButton Name  cmdLogin
Caption  登录
CommandButton Name  Cmdsetup
Caption 设置密码
Label Name LblName
Caption 英文代码
Label Name LblPassword
Capiton 数字密码
Label Name LblTitle
Caption 登录系统





TextBox Name TxtName
Text
Passwordchar *
Textbox Name TxtPassword
Text
Passwordchar *






1、双击登录按钮输入:
   Private Sub CmdLogin_Click()
 Dim TempName As String  '定义临时变量
 Dim TempPassword As String‘定义临时变量
   读取用户名和密码
   TempName = GetSetting("Myapp1", "user", "Name")  
 TempPassword = GetSetting("Myapp1", "user", "Password")
 比较用户名和密码
   If TxtName = TempName And TempPassword = TxtPassword Then
MsgBox "登录成功!www.163164.com
Else
MsgBox "密码不对!www.163164.com
End If
End Sub





2、双击设置按钮输入:
Private Sub Cmdsetup_Click()
   
If TxtName.Text <> "" And TxtPassword <> "" Then
'保存用户名和密码
    SaveSetting "Myapp1", "user", "Name", TxtName
SaveSetting "Myapp1", "user", "Password", TxtPassword
   MsgBox "设置成功!www.163164.com
ElseIf TxtName.Text = "" Then
MsgBox "姓名不可以为空!www.163164.com
TxtName.SetFocus
ElseIf TxtPassword.Text = "" Then
MsgBox "密码不可以为空!www.163164.com
TxtPassword.SetFocus
End If





End Sub





3、在Form_KeyPress中输入
Private Sub Form_KeyPress(KeyAscii As Integer)
If (KeyAscii = vbKeyReturn) Then
'替用户按下TAB鍵,把焦点移到下一个控件
SendKeys "{TAB}!www.163164.com
Exit Sub
ElseIf (KeyAscii = vbKeyBack) Then
Exit Sub
End If






If (Me.ActiveControl.Name = "TxtName") Then
If (KeyAscii >= Asc("a") And KeyAscii <= Asc("z")) _
Or (KeyAscii >= Asc("A") And KeyAscii <= Asc("Z")) Then
'全部转换成大写字母
KeyAscii = Asc(UCase(Chr(KeyAscii)))
Else
MsgBox "请输入英文字母!www.163164.com
KeyAscii = 0
End If
ElseIf (Me.ActiveControl.Name = "TxtPassword") Then
If (Not IsNumeric(Chr(KeyAscii))) Then
KeyAscii = 0
MsgBox "请输入数字!www.163164.com
End If
End If
End Sub





  在运行以上程序以后,你可以在WINDOWS运行菜单中鍵入REGEDIT.EXE,
在“KEY_CURRENT_USER\Software\Vb and VBA Program Settings\Myapp1\user"中会找到你所设置在密码。
  以上只是提供给大家一个思路,真证在密码没那么简单,要真正做到安全,可在此基础上加入一此“与”“或”运算就有一定的保密性了。
以上程序在Windows98中通过。如果有什么不明白请与我联系free_hzj@163.com

址163164.cn 微信1631640 QQ3149886

返回总目录 上一页 目录页 下一页