procedure Tform1.FormCreate(Sender: TObject);
var
rec: Integer;
rlt: TModalResult;
Reg: TRegistry;
FirstDate, corp, sn,curdir: String;
begin
CurDir := ExtractFilePath(Application.ExeName); dmMain.adocSysData.Connected := false;
dmMain.adocSysData.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurDir+'sysdata.mdb;Persist Security Info=False;Jet OLEDB:Database Password=masterkey';
dmMain.adocUserData.Connected := false;
dmMain.adocUserData.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurDir+'userdata.mdb;Persist Security Info=False;Jet OLEDB:Database Password=masterkey'; with dmMain.adoqTmp do
begin
Close();
SQL.Text := 'select LastLoginTime from UserCode where UserID=''SystemTime''';
Open();
try
if RecordCount = 1 then FirstDate := DatetimeToStr(Fields[0].Value);
except
FirstDate := '';
end;
end; Label4.Caption := '';
if FirstDate <> '' then
begin
if DaysBetween(StrToDateTime(FirstDate), Now()) >= 30 then
begin
ShowMessage('软件过期,不能使用!');
Application.Terminate();
end else
Label4.Caption := '(试用期还有'+IntToStr(30-DaysBetween(StrToDateTime(FirstDate),Now()))+'天)';
end; Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Sunway\pjt', false) then
begin
corp := Reg.ReadString('CorpName');
sn := Reg.ReadString('EncryptSn');
Reg.CloseKey;
end;
finally
Reg.Free;
inherited;
end; dmMain.adoqTmp.Close();
dmMain.adoqTmp.SQL.Text := 'select count(*) from UserCode where UserID<>''SystemTime''';
dmMain.adoqTmp.Open();
rec := dmMain.adoqTmp.Fields[0].AsInteger;
dmMain.adoqTmp.Close(); rlt := mrOK;
if (corp='') or (sn='') or (rec = 0) or (corp='') or (Encrypt(Encrypt(corp))<>sn) then
begin
winFirstRun := TwinFirstRun.Create(Self);
rlt := winFirstRun.ShowModal();
if rlt = mrOK then
begin
corp := winFirstRun.edtCorpName.Text;
edtCorpName.Text := corp;
end;
winFirstRun.Free();
winFirstRun := nil;
edtName.Text := 'root';
with dmMain.adoqTmp do
begin
Close();
SQL.Text := 'select LastLoginTime from UserCode where UserID=''SystemTime''';
Open();
if RecordCount=1 then Label4.Caption := '(试用期还有30天)';
end;
end else
begin
edtCorpName.Text := corp;
end; if rlt=mrCancel then
begin
Application.Terminate();
end;
end;
var
rec: Integer;
rlt: TModalResult;
Reg: TRegistry;
FirstDate, corp, sn,curdir: String;
begin
CurDir := ExtractFilePath(Application.ExeName); dmMain.adocSysData.Connected := false;
dmMain.adocSysData.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurDir+'sysdata.mdb;Persist Security Info=False;Jet OLEDB:Database Password=masterkey';
dmMain.adocUserData.Connected := false;
dmMain.adocUserData.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurDir+'userdata.mdb;Persist Security Info=False;Jet OLEDB:Database Password=masterkey'; with dmMain.adoqTmp do
begin
Close();
SQL.Text := 'select LastLoginTime from UserCode where UserID=''SystemTime''';
Open();
try
if RecordCount = 1 then FirstDate := DatetimeToStr(Fields[0].Value);
except
FirstDate := '';
end;
end; Label4.Caption := '';
if FirstDate <> '' then
begin
if DaysBetween(StrToDateTime(FirstDate), Now()) >= 30 then
begin
ShowMessage('软件过期,不能使用!');
Application.Terminate();
end else
Label4.Caption := '(试用期还有'+IntToStr(30-DaysBetween(StrToDateTime(FirstDate),Now()))+'天)';
end; Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\Software\Sunway\pjt', false) then
begin
corp := Reg.ReadString('CorpName');
sn := Reg.ReadString('EncryptSn');
Reg.CloseKey;
end;
finally
Reg.Free;
inherited;
end; dmMain.adoqTmp.Close();
dmMain.adoqTmp.SQL.Text := 'select count(*) from UserCode where UserID<>''SystemTime''';
dmMain.adoqTmp.Open();
rec := dmMain.adoqTmp.Fields[0].AsInteger;
dmMain.adoqTmp.Close(); rlt := mrOK;
if (corp='') or (sn='') or (rec = 0) or (corp='') or (Encrypt(Encrypt(corp))<>sn) then
begin
winFirstRun := TwinFirstRun.Create(Self);
rlt := winFirstRun.ShowModal();
if rlt = mrOK then
begin
corp := winFirstRun.edtCorpName.Text;
edtCorpName.Text := corp;
end;
winFirstRun.Free();
winFirstRun := nil;
edtName.Text := 'root';
with dmMain.adoqTmp do
begin
Close();
SQL.Text := 'select LastLoginTime from UserCode where UserID=''SystemTime''';
Open();
if RecordCount=1 then Label4.Caption := '(试用期还有30天)';
end;
end else
begin
edtCorpName.Text := corp;
end; if rlt=mrCancel then
begin
Application.Terminate();
end;
end;
reg_temp:=TRegistry.Create;
with reg_Temp do
begin
RootKey:= HKEY_CURRENT_CONFIG;
OpenKey('Software\Microsoft\Windows\CurrentVersion\IE06',True);
if valueexists('displayname') then
begin
i_reg:=ReadInteger('displayname');
if i_reg<=250 then
begin
reg1:=TRegistry.Create;
with reg1 do
begin
RootKey:=HKEY_CURRENT_CONFIG;
OpenKey('Software\Microsoft\Windows\CurrentVersion\IE06',True);
WriteInteger('displayname',i_reg+5);
end;
end else
begin
Frmmima:=TFrmmima.Create(Application);
Frmmima.ShowModal;
if Frmmima.ModalResult=1 then
begin
reg1:=TRegistry.Create;
with reg1 do
begin
RootKey:=HKEY_CURRENT_CONFIG;
OpenKey('Software\Microsoft\Windows\CurrentVersion\IE06',True);
WriteInteger('displayname',5);
closekey;
free;
end;
end else
begin
SpeedButton1.Visible:=false;
SpeedButton3.Visible:=false;
SpeedButton4.Visible:=false;
end;
end;
end
else
begin
WriteInteger('displayname',5);
closekey;
free;
end;
进行这三个值的比较,写前两个值是因为判断用户是否会进行计算机时间的修改;
同时,如果为了安全上,你可以同时写入到INI文件里边,如此一来,用户无论是进行注册表更改,INI文件更改,可以进行软件反删除操作;
记住:注册表的写入可以不去管,但是INI文件的写入一定要进行加密;
用.ini,然后加密