> > the path to program files is in the environment variable 
> 'ProgramFiles' 
> > and you can get the value by using the function 
> GetEnvironmentVariable
> 
> I don't think it's the right way to get this information.
> Special folders doesn't have the same name in all languages.
> Better to use SHGetSpecialFolderLocation API as I explained 
> in my previous message.

I agree with the first part Francois but I don't see how
SHGetSpecialFolderLocation returns the ProgramFiles Dir.  What CSIDL_XXXX
constant is that?  CSIDL_PROGRAMS is not it.  Maybe there are some new
constants that my help doesn't show.

You also mention that special folders don't all have the same name, I agree,
but do the Microsoft registry keys still use English when in other
languages?  I'm using the following,

function GetProgramFilesDirectory : string;
const
  ROOT_HIVE  = HKEY_LOCAL_MACHINE;
  VALUE_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion';
  VALUE_NAME = 'ProgramFilesDir';
var
  //uR    : X_UINT;
  hK    : HKEY;
  vSize : X_UINT;
begin
  if (RegOpenKeyEx(ROOT_HIVE, pchar(VALUE_PATH), 0, KEY_READ, hK) =
ERROR_SUCCESS) then begin      
    if (RegQueryValueEx(hK, pchar(VALUE_NAME), nil, nil, nil, @vSize) =
ERROR_SUCCESS) then begin  
      SetLength(Result, vSize);

      RegQueryValueEx(hK, pchar(VALUE_NAME), nil, nil, pbyte(Result),
@vSize);                     
      Result[vSize] := '\';
    end;
    RegCloseKey(hK);
  end;
end;



Would the name of the key "ProgramFilesDir" change with a change in
language?



Regards,

------------------------------------------------------------------------
 Jim Burns, <mailto:[EMAIL PROTECTED]>
   Technology Dynamics
   Pearland, Texas  USA 
   281 485-0410 / 281 813-6939


_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi

Reply via email to