Способ заставить API SearchPath не смотреть в c: \ windows? - PullRequest
0 голосов
/ 07 октября 2008

Есть ли способ заставить API SearchPath не выполнять поиск в c: \ windows при использовании пути поиска по умолчанию (передавая NULL в качестве первого параметра)? Я не могу изменить вызывающего абонента для отправки по определенному пути.

У меня есть система с ini-файлом приложения в c: \ windows (которую я не хочу использовать, но по старым причинам она должна оставаться там). Я помещаю свою копию этого же ini-файла в c: \ users \ public и помещаю c: \ users \ public в начало переменной окружения моего системного пути, но вызов SearchPath все еще находит версия \ windows. Если я удаляю эту версию, она находит версию c: \ users \ public, поэтому я знаю, что путь был задан правильно.

Ответы [ 3 ]

2 голосов
/ 15 июня 2009

Я знаю, что уже очень поздно, но, столкнувшись с этой проблемой самостоятельно, я бы предложил лучшее решение.

Первый аргумент 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);
1 голос
/ 07 октября 2008

Попробуйте SetCurrentDirectory("c:\users\public"), а затем SearchPath(...).

1 голос
/ 07 октября 2008

Согласно MSDN , вы ничего не можете сделать с этой панелью, изменяющей запись реестра системного уровня (HKLM) (что является "плохой вещью"). Изменение реестра приведет к тому, что порядок поиска начнется с текущего рабочего каталога, который вы можете установить в нужную папку в ярлыке. (Опять же, я хочу сказать; изменение записи реестра уровня машины для этого - потенциально опасно!)

Вы изучили прокладки приложения ? Это может быть то, что может работать для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...