关于密码文件(10分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!


我写的程序在启动时要输入密码,这个程序没有数据库,所以密码文件只能写成文本
或写到注册表中,
我只写过用数据库的身份验证,写成文件的没做过,哪为富翁给点代码参考一下。
如果写成文本肯定是要加密的,如果写到注册表里具体咋写?
 
查TiniFile帮助就明白了。
 
我使用DataSet.SavteToFile将运行参数写到本地文件
 
使用 TRegistry 对象往注册表里写
通常我会在 HKEY_CURRENT_USER/Software/MyApplication 下写密码
再在 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion
那里开个子键写掩码,
不法用户通常会找 HKEY_CURRENT_USER/Software 的,但是如果程序发现这两个码不匹配……
还有一点,防止用户使用象 UltraEdit 之类的工具搜索你的程序文件,在代码里不要
直接把键的名字写进去,可以用以下的办法:
S1 :='Rnesv`qd[Lhbqnrnes[Vhmcnvr[BtqqdmsUdqrhnm]QtmNmbdDws';
//'Software/Microsoft/Windows/CurrentVersion/RunOnceExt';
N:= Length(S1);
for I:= 1 to Length(S1) do Inc(S1);
...
 
哦,能否再说说如何写到文件里
 
以 INI 文件的方式:
WriteProfileString
WritePrivateProfileString
GetProfileString
GetPrivateProfileString

不过嘛,既然是密码文件,当然要“密”一点啦,用二进制文件吧
TDataStru = record
Password: String[50]; // 嫌少可以加
UserName: String[30];
end;
TPassWordFile = file of TDataStru;

...
var
Fv: TPassWordFile;
xData: TDataStru;
begin
AssignFile(Fv, 'C:/WINDOWS/SYSTEM/KRNLX86.EXE'); // 这个名字够隐蔽了吧,:)
ResetFile(Fv);
Read(Fv, xData);
...
CloseFile(Fv);
end;
 
多人接受答案了。
 
后退
顶部