'声明API函数和一些常量用于操作注册表
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const ERROR_SUCCESS = 0&
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal Hkey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Const REG_SZ = 1 ' Unicode nul terminated string
Public Const REG_DWORD = 4
Private Sub Cmdok_Click() '当确认被按下时
'T1,T2是两个文本框,用户输入密码和确认密码
If T1.Text <> T2.Text Then
MsgBox "两次输入的密码不一致!", vbOKOnly + vbExclamation, "出错啦!"
T1.Text = ""
T2.Text = ""
T1.SetFocus
Exit Sub
ElseIf T1.Text = "" Then
MsgBox "你没有输入密码呀???!!", vbOKOnly + vbExclamation, "出错啦!"
T1.Text = ""
T2.Text = ""
T1.SetFocus
Exit Sub
Else
Call Setp '调用保存密码过程
MsgBox "设置密码成功!"
Cmdok.Enabled = False
End Sub
'此过程用于加密和密码保存
Sub Setp()
passWord = T1.Text
Dim TmpI(200), i As Integer
Dim Tmp(200), PWD As String
For i = 1 To Len(passWOrd)
Tmp(i) = Mid(passWOrd, i, 1) '将密码拆开并保存到变量中等待加密
TmpI(i) = Asc(Tmp(i)) '将拆开的字符串转成ASCII码
TmpI(i) = TmpI(i) + (i * (i + 3)) '对Ascii加密 你可以弄的复杂一点
TmpI(i) = Tmp(i) + 456 '这句话是让加密后的Ascii的长度达到3位,这样可以方便解密,往下看解密过程就知道了
PWD = PWD & TmpI(i) '把加密后的Ascii码连接起来,准备存到注册表里
Call saveString(HKEY_CURRENT_USER, "Software\这里的字段你自己填\我的程序", "这个是字串名", (PWD)) '我打汉字的部分你可以自己添,最好把存到Software\Microsoft里这样比较有迷惑性 ^_^