środa, 5 maja 2010

Jak wykryć zainstalowane sterowniki HASP w InstallShield

Funkcja oparta jest o rejestry windows. Zwraca wartość true/false oraz wersję zainstalowanego sterownika HASP. Przeznaczona jest do wykrywania sterowników w wersji >= 4.1

function BOOL DetectHasp(sVerC, bLog) 
//sVerC - wersja do sprawdzenia
//bLog - TRUE - zapisywanie informacji w plku log
string RegPath,sVersion,sVer;
number nSize,nType;
BOOL bResult;
begin  
if (bLog) then WriteLog(0,"* Sprawdzenie zainstalowanych sterowników HASP4 i nowszych"); endif;
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);         
 RegPath="SOFTWARE\\Aladdin Knowledge Systems\\HASP\\Driver\\Installer";
 if (RegDBKeyExist(RegPath)=1) then
    nType = REGDB_STRING;
    nSize = 255;
    if (RegDBGetKeyValueEx(RegPath,"Hasp4Version",nType,sVersion,nSize)=0) then
          //Spradzenie czy wersja zainstalowanego Hasp <4.1
          if (bLog) then WriteLog(1,"- zainstalowany HASP w wersji:"+sVersion); endif;
          StrSub(sVer,sVersion,0,3);               
          if (StrCompare(sVer,sVerC)>=0) then bResult = TRUE;
                                          else bResult = FALSE;     
          endif;                                                  
       else
           if (RegDBGetKeyValueEx(RegPath,"Version",nType,sVersion,nSize)=0) then //Sprawdzenie dla HASP_HL ver 5.5
               if (bLog) then WriteLog(1,"- zainstalowany HASP w wersji:"+sVersion); endif;
               StrSub(sVer,sVersion,0,3);               
              if (StrCompare(sVer,sVerC)>=0) then bResult = TRUE;
                                                 else bResult = FALSE;     
              endif;                                                  
           else     
             //if (bLog) then WriteLog(1,"- wykryto HASP w wersji mniejszej niż "+sVerC); endif;
             bResult = FALSE; 
         endif;   
       endif;
 else
   if (bLog) then WriteLog(1,"- nieznaleziono"); endif;
   bResult = FALSE;
 endif;
 
 //Sprawdzenie jescze czy nie jest to Hasp 4.96
 if (!bResult) then
     RegPath="SYSTEM\\ControlSet001\\Services\\Haspnt";
     if (RegDBKeyExist(RegPath)=1) then
        nType = REGDB_STRING;
        nSize = 255;
        if (RegDBGetKeyValueEx(RegPath,"Version",nType,sVersion,nSize)=0) then //Sprawdzenie dla HASP4.96
                   if (bLog) then WriteLog(1,"- zainstalowany HASP w wersji:"+sVersion); endif;
                   StrSub(sVer,sVersion,0,3);               
                  if (StrCompare(sVer,sVerC)>=0) then bResult = TRUE;
                                                     else bResult = FALSE;     
                  endif;                                                             
        endif;           
     endif;  
 endif;
 
 return bResult;
end; 

Brak komentarzy:

Prześlij komentarz