Contributor: MIKE CARIOTOGLOU



>The GetEnvironmentVariable function retrieves the value of the specified variable from the environment block
>of the calling process. The value is in the form of a null-terminated string of characters.

>DWORD GetEnvironmentVariable(

>    LPCTSTR  lpName,        // address of environment variable name 
>    LPTSTR  lpBuffer,        // address of buffer for variable value 
>    DWORD  nSize         // size of buffer, in characters
>   );        
>Parameters

>lpName

>Points to a null-terminated string that specifies the environment variable. 

>lpBuffer

Here is a simple unit I cooked for delphi 32 bit. It will give you the whole
environment in the form of a string list. then , you can access it as usual 

env:=tenvironment.create;
a:=env.values['PATH];
env.free;
etc etc

look up the values property of tstrings for more info.

-------------------------- cut here

unit uenv;

Interface

uses windows,classes;

type tenvironment=class(tstringlist)
                   constructor create;
                  end;

implementation

constructor tenvironment.create;
 var base,p:pchar;
     a:string;
 begin
  inherited create;
  base:=GetEnvironmentStrings; <--- for 16-bits, change to GetDosEnvironment.
  if base=nil then exit;
  p:=base;
  while p^<>#0 do
   begin
    a:=p; <-- for 16-bit change this to a:=strpas(p);
    add(a);
    p:=p+length(a)+1;
   end;
  FreeEnvironmentStrings(base);
 end;