function BOOL SetEnvironment(szName, szValue, bDodaj, bLog)
#define WM_WININICHANGE 0x001A
#define WM_SETTINGCHANGE 0x001A
#define SMTO_ABORTIFHUNG 0x2
#define HWND_BROADCAST 0xffff
BOOL bResult;
NUMBER nResult, nvSize, nType;
NUMBER nvFileHandle;
STRING szKey, szEnv, svValue;
STRING szProgram, szCmdLine, szLine;
LONG bvReturn;
BOOL bFind;
POINTER pEnv;
LIST szList1;
int i;
begin
if (bLog) then WriteLog(0,"Ustawienie zmiennej środowiskowej "+szName+"..."); endif;
bResult = FALSE;
nvSize = -1;
//nType = REGDB_STRING;
nType = REGDB_STRING_EXPAND;
szKey = "SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
if !bDodaj then
if RegDBGetKeyValueEx (szKey, szName, nType, svValue, nvSize )=0 then //pobierz dotychczasowe wartosci
if StrFind(svValue,szValue)<0 then
nResult = RegDBSetKeyValueEx(szKey, szName, REGDB_STRING, szValue, -1); //Ustawienie zmiennej
else
if bLog then WriteLog(1,"- zmienna systemowa ustawiona w systemie \""+szName+"\" o wartości: \""+szValue+"\""); endif;
return FALSE;
endif;
else
nResult = RegDBSetKeyValueEx(szKey, szName, REGDB_STRING, szValue, -1); //Ustaiwienie zmiennej
endif;
else
if RegDBGetKeyValueEx (szKey, szName, nType, svValue, nvSize )=0 then //pobierz dotychczasowe wartosci
if StrLength(svValue)>0 then
if StrFind(svValue,szValue)<0 then
svValue = svValue + ";" + szValue;
else
if (bLog) then WriteLog(1,"- zmienna systemowa \""+szName+"\" o wartości: \""+szValue+"\" już ustawiona"); endif;
return FALSE;
endif;
else
svValue = szValue;
endif;
nResult = RegDBSetKeyValueEx(szKey, szName, REGDB_STRING, svValue, -1);
else
nResult = RegDBSetKeyValueEx(szKey, szName, REGDB_STRING, szValue, -1); //ustaw nowa zmienna
endif;
endif;
if (nResult < 0) then
if bLog then WriteLog(1,"- nie udało się ustawić zmiennej systemowej \""+szName+"\" o wartości: \""+szValue+"\""); endif;
else
if bLog then WriteLog(1,"- ustawiono zmienną systemową \""+szName+"\" o wartości: \""+szValue+"\""); endif;
szEnv = "Environment";
pEnv = &szEnv;
SendMessage (HWND_BROADCAST, WM_WININICHANGE, 0, pEnv );
bResult = TRUE;
endif;
return bResult;
end;
Programowanie c++/c#/delphi/javas/php/installscript/nativescript
Przykłady - przydatne funkcje
środa, 28 października 2009
Ustawienie zmiennej środowiskowej w systemie
Po ustawieniu zmiennej środowiskowej wymagany jest restart systemu
Etykiety:
InstallShield - funkcje
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz