Encontrar uma pasta de dados de aplicativos "verdadeira" do usuário do Windows?

Eu tenho um aplicativo Delphi 6 que, como a maioria dos aplicativos do Windows, lê / grava dados na pasta "dados de aplicativos locais" do usuário. Eu uso o código abaixo para determinar essa pasta. Até agora, esse código funcionou para a maioria dos meus usuários. Eu encontrei um usuário cujos dados de aplicativo local não estão na pasta esperada:

C:\Users\Bob\AppData\Roaming\

Normalmente, a pasta de dados do aplicativo local é resolvida para:

C:\Documents and Settings\Bob\Application Data\

O que é estranho na situação específica desse usuário é que várias chaves do registro normalmente encontradas em HKEY_LOCAL_MACHINE estão realmente localizadas em HKEY_CURRENT_USER. Eles estão sendo executados no Windows 7.

Por falta de uma palavra melhor, existe uma maneira de obter os dados "verdadeiros" do aplicativo para um usuário, para que eu possa navegar melhor nessa situação? Se é uma questão de escolher inteligentemente entre as pastas especiais CSIDL_APPDATA, CSIDL_COMMON_APPDATA e CSIDL_LOCAL_APPDATA, qual é a lógica para isso? Como você pode ver, estou procurando uma função para todos os propósitos que possa arrancar a pasta correta de dados do aplicativo, independentemente da versão do Windows em que o usuário esteja executando ou de sua configuração específica do PC.

Eu encontrei este post Stack Overflow que parece ter a resposta, mas ele está usando a função da biblioteca .NET e estou usando o Delphi 6. Se esta solução responde à minha pergunta, alguém pode me dizer uma maneira rápida de replicá-lo no Delphi:

Como posso obter o caminho da pasta "Dados do aplicativo" do usuário atual?

// Function to get the app data special folder.
function GetAppdataFolder: string;
begin
   Result := GetSpecialFolderLocation(CSIDL_APPDATA);
end;

questionAnswers(3)

yourAnswerToTheQuestion