Я знаю, что уже очень поздно, но, столкнувшись с этой проблемой самостоятельно, я бы предложил лучшее решение.
Первый аргумент SearchPath , как вы обнаружили, может использоваться для указания каталогов, в которых вы хотите его искать, вместо порядка по умолчанию. Вы можете извлечь и использовать PATH текущего пользователя с помощью GetEnvironmentVariable , а затем выполнить поиск в пределах этого:
DWORD err = GetEnvironmentVariable("PATH", NULL, 0);
char* path = new char[err+1]; path[err] = 0;
GetEnvironmentVariable("PATH", path, err);
err = SearchPath(path, "application", ".ini", 0, NULL, NULL);
char* searchResult = new char[err+1]; searchResult[err] = 0;
err = SearchPath(path, "application", ".ini", err, searchResult, NULL);