Parametry:
- GUID - GUID zainstalowanego produktu\
- Path - odczytana ścieżka
- Name - odczytana nazwa produktu
- Version - odczytana wersja zainstalowanego produktu
- bLog - zapis do loga
Funkcja zwraca true/false, wartość true w przypadku pozytywnego odczytania ścieżki instalacyjnej.
Nagłówek funkcji
export prototype BOOL GetInstallLocationGUID(STRING, /*GUID*/ BYREF STRING /*Path*/, BYREF STRING /*Name*/, BYREF STRING /*Version*/, BOOL /*bLog*/);
Ciało funkcji
function BOOL GetInstallLocationGUID(szGUID, svPath, svName, svVersion, bLog)
#define UKEY "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
string RegPath, sKey, sValue, sData, sFolder;
number nReturn, nResult, nType, nSize, i, nData;
BOOL bResult;
LIST listSubKeys;
begin
bResult = FALSE;
if (bLog) then WriteLog(1,"Odczyt ścieżki do zainstalowanego produktu"); endif;
listSubKeys = ListCreate(STRINGLIST);
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
nReturn = RegDBQueryKey(UKEY, REGDB_KEYS, listSubKeys );
if (nReturn=0) then
ListGetFirstString ( listSubKeys, sKey );
if (ListCount(listSubKeys)>0) then
ListSetIndex(listSubKeys, LISTFIRST);
for i=0 to ListCount(listSubKeys)-1
ListCurrentString ( listSubKeys, sKey );
if (sKey==szGUID) then
if (bLog) then WriteLog(2,"- znaleziono zainstalowany produkt "+szGUID); endif;
RegPath=UKEY+"\\"+sKey;
sFolder=sKey;
if (RegDBKeyExist(RegPath)==1) then
sKey = RegPath;
sValue="DisplayName";
nType = REGDB_STRING;
if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
svName = sData;
if (bLog) then WriteLog(3,"- nazwa produktu "+sData); endif;
else
svName = "";
if (bLog) then WriteLog(3,"- brak klucza nazwy produktu "); endif;
endif;
sValue="DisplayVersion";
if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
svVersion = sData;
if (bLog) then WriteLog(3,"- wersja produktu "+sData); endif;
else
svVersion = "";
if (bLog) then WriteLog(3,"- brak klucza wersji produktu "); endif;
endif;
sValue="InstallLocation";
if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
if (bLog) then WriteLog(3,"- ścieżka instalacji "+sData); endif;
svPath = sData;
bResult = TRUE;
else
if (bLog) then WriteLog(3,"- brak klucza ścieżki instalacyjne "); endif;
endif;
sValue="InstallDate";
if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
if (bLog) then WriteLog(3,"- data instalacji "+sData); endif;
bResult = TRUE;
else
if (bLog) then WriteLog(3,"- brak klucza daty instalacji "); endif;
endif;
endif;
endif;
ListSetIndex(listSubKeys, LISTNEXT);
endfor;
else
if (bLog) then WriteLog(2,"- brak listy zainstalowanych produktow GUID"); endif;
endif;
else
if (bLog) then WriteLog(2,"- błąd odczytu rejestru"); endif;
endif;
return bResult;
end;
Oprócz ścieżki instalacyjnej (Path) , funkcja zwraca nazwę produktu (Name) i wersję (Version)
Brak komentarzy:
Prześlij komentarz