Найти «истинную» папку данных приложения пользователя Windows?

У меня есть приложение Delphi 6, которое, как и большинство приложений Windows, читает / записывает данные для пользователя "данные локального приложения " папка. Я использую код ниже, чтобы определить эту папку. До сих пор этот код работал для большинства моих пользователей. Я столкнулся с пользователем, данные локального приложения которого не находятся в ожидаемой папке:

C:\Users\Bob\AppData\Roaming\

Обычно локальная папка данных приложения разрешается в:

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

Что странного в этом пользователе?Особая ситуация заключается в том, что несколько ключей реестра, обычно находящихся в HKEY_LOCAL_MACHINE, фактически находятся в HKEY_CURRENT_USER. Они работают на Windows 7.

Из-за отсутствия лучшего слова, есть ли способ получить "правда" данные приложения для пользователя, чтобы я мог лучше ориентироваться в этой ситуации? Если оно'вопрос разумного выбора между специальными папками CSIDL_APPDATA, CSIDL_COMMON_APPDATA и CSIDL_LOCAL_APPDATA, какова логика для этого? Как вы можете сказать, яЯ ищу универсальную функцию, которая может выкорчевать правильную папку данных приложения независимо от версии Windows, которую использует пользователь, или конкретной конфигурации ПК.

Я нашел этот пост переполнения стека, который, кажется, имеет ответ, но он использует функцию из библиотеки .NET, и я использую Delphi 6. Если это решение отвечает на мой вопрос, может кто-нибудь сказать мне быстрый способ воспроизвести его в Delphi:

Как я могу получить путь текущего пользователя "Данные Приложения" папка?

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

Ответы на вопрос(3)

Ваш ответ на вопрос