Надеюсь на помощь здесь, так как я вырываю волосы! Я использую Visual Studio 2010.
У меня есть приложение MFC C ++ для развертывания. У меня есть файл config.ini, на который я бы хотел сослаться при запуске exe. В настоящее время пользователь не может дважды щелкнуть * .myfile, и он открывается, потому что приложение не «запускается» в папке приложения (куда я устанавливаю INI-файл), и поэтому не может найти INI. Я пробовал следующее
Я попытался найти информацию о настройке папки «start in» для действия & Open, но ничего не смог найти.
Я не могу найти какую-либо информацию о настройке значения реестра ini-файла при установке, поскольку это будет относительная ссылка в зависимости от выбора пользователя, поэтому this не применяются.
Он неуправляемый, поэтому решение app.config для C ++ / CLI не применяется.
Использование папки Application Data, но это дает мне неправильный путь - я использую Windows 7, возможно, поэтому, но я хочу, чтобы мое развертывание работало на Windows XP ++ .
Считывание пути приложения при запуске (с здесь ) (поместите это в CMyApp :: InitInstance ().
Код:
CString strPath;
TCHAR* pstrExePath = strPath.GetBuffer (MAX_PATH);
::GetModuleFileName (0, pstrExePath, MAX_PATH);
strPath.ReleaseBuffer();
int pos = strPath.ReverseFind('\\');
strPath = strPath.Left(pos);
strPath += "\\config.ini";
Это самый близкий, но в режиме отладки странный путь "\. \" Делает его недействительным. Я мог бы использовать #ifdebug, но это, конечно, грязно?
Очень ценю любую помощь - спасибо!
EDIT:
Используя это:
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
MessageBox(NULL,szPath, "MyApp", MB_OK|MB_ICONWARNING);
}
Я получаю: "C: \ ProgramData" в качестве szPath. Может быть, это правильно для режима отладки? Или машина для разработки?