Files
roacont/Programe/verificare.prg

94 lines
2.5 KiB
Plaintext

FUNCTION verif_ser_perm
CLEAR
?PORNIRE()
Function pornire
Set Exact On
Private calewin,calesys,checksum1,checksum2,serinreg,serdisk,file1,file2,valret,serdisktemp
Store '' To calewin,serinreg,serdisk,calesys,serdisktemp,catehd
Store 0 To checksum1,checksum2
Store .T. To valret
Declare Integer SHGetFolderPath In SHFOLDER.Dll ;
INTEGER hwndOwner, ;
INTEGER nFolder, ;
INTEGER hToken, ;
INTEGER dwFlags, ;
STRING @ pszPath
Declare Integer GetActiveWindow In WIN32API
#Define CSIDL_WINDOWS 36
#Define CSIDL_SYSTEM 37
#Define CSIDL_PROGRAMS 38
lcPath = Repl(Chr(0),261)
=SHGetFolderPath(GetActiveWindow(),CSIDL_WINDOWS,0,0,@lcPath)
calewin=Left(lcPath,At(Chr(0),lcPath)-1)
lcPath = Repl(Chr(0),261)
=SHGetFolderPath(GetActiveWindow(),CSIDL_SYSTEM,0,0,@lcPath)
calesys=Left(lcPath,At(Chr(0),lcPath)-1)
&&se verifica existenta celor trei fisiere
If (Not File(calesys+'\diskserial.dll')) Or (Not File(calesys+'\getmacip.dll')) Or (Not File(calewin+'\comdir.snr'))
valret=.F.
Endif
If valret
file1=Filetostr(calesys+'\diskserial.dll')
checksum1=Sys(2007,file1)
file2=Filetostr(calesys+'\getmacip.dll')
checksum2=Sys(2007,file2)
If (VAL(checksum1) != 58755) Or (VAL(checksum2) != 30476)
valret=.F.
Endif
Endif
If valret
Declare Integer GetSerialNumber In diskSerial.Dll Integer ,String
serdisktemp=Space(40)
catehd=0
For i=0 To 3
GetSerialNumber(i,@serdisktemp)
If (Len(Alltrim(serdisktemp))!=0) And catehd=0
serdisk=Substr(Alltrim(serdisktemp),Len(Alltrim(serdisktemp))-8,8)
serdisk=Upper(serdisk)
catehd=catehd+1
Endif
Endfor
Endif
If valret
gnFileHandle = Fopen(calewin+'\comdir.snr')
nSize = Fseek(gnFileHandle, 0, 2) && Move pointer to EOF
If nSize<8
valret=.F.
Else
= Fseek(gnFileHandle, 0, 0) && Move pointer to BOF
cString = Fread(gnFileHandle,8)
serinreg=DECODARE1(Alltrim(Upper(cString)))
If serdisk!=serinreg
valret=.F.
Endif
Endif
= Fclose(gnFileHandle)
Endif
On Error valret=.F.
Return valret
*************
FUNCTION decodare1
PARAMETERS lstring
LOCAL lens,poz1,poz2,lret,lcstring,val1
lret=''
lcstring=ALLTRIM(UPPER(lstring))
lens=LEN(lcstring)
FOR i=1 TO lens
poz1=SUBSTR(lcstring,i,1)
val1=ASC(poz1)
DO CASE
CASE val1>=48 AND val1<=57
poz2=CHR(val1+33)&& din 0-9 in Q-Z
CASE val1>=81 AND val1<=90
poz2=CHR(val1-33)&& din Q-Z in 0-9
CASE val1>=65 AND val1<=72
poz2=CHR(val1+8)&&din K-R in S-Z
CASE val1>=73 AND val1<=80
poz2=CHR(val1-8)&&din S-Z in K-R
ENDCASE
lret=lret+poz2
endfor
RETURN lret