Nos itt egy eljárás a form OnCreate eseményéhez. A form-on egy label és egy edit van. A teszteléshez ennyi is elég azt hiszem.
procedure TForm1.FormCreate(Sender: TObject);
var s : string;
begin
s:=GetEnvironmentVariable('APPDATA');
if DirectoryExists(s) then showmessage('Létezik');
Edit1.text:=AnsiToUtf8(s);
label1.caption:=s;
end;
Így nálam a ShowMessage nem jelenik meg, az edit-ben megjelenik az elérési út, de az ékezetes betűk nem, label-ben pedig nem látszik az s értéke mivel ugye ott nem konvertáltam át utf8-ba az s stringet.
Mint korábban is írtam megpróbáltam már átalakítgatni a GetEnvironmentVariable által visszaadott stringet különböző karakterkódolásra, de igazából egyik sem segített. Az egyik unit szerint a GetEnvironmentVariable ISO8859-1 kódolású stringet ad vissza, a windowsomon CP1250(vagy Windows-1250, bár szerintem ez ugyan az) kódolás van gyanítom minden magyar xp-ben ez van alapból.
Az XP egyébként Home és minden megjelent frissítés fent van rajta.