94 lines
2.5 KiB
Plaintext
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
|
|
|