Как получить appdata / local / <MyProgramFolder>/ path в c ++ - PullRequest
0 голосов
/ 14 марта 2019

Я использовал fstream и использовал getenv, чтобы получить путь к appdata.Я использовал следующие коды, но он выводит данные по appdata / roaming /

QString appdata = getenv("appdata");
appdata += "\\DoDLog.log";
fstream stud;
stud.open(appdata.toStdString().c_str(), ios::app);

То, что я хочу сделать, это путь к appdata / local // DoDLog.log

MyProgram - это программа c ++что я бегалПожалуйста, помогите.

1 Ответ

0 голосов
/ 14 марта 2019

Вам нужно использовать SHGetSpecialFolderLocation

Это решение C, его не должно быть сложно адаптировать к C ++, QString, std::string или как угодно.

#include <shlobj.h>
...
HRESULT GetFolderLocation (int csidl, char* buffer)
{
  LPITEMIDLIST pidl = 0;      
  HRESULT result = SHGetSpecialFolderLocation(NULL, csidl, &pidl);      
  *buffer = 0 ;

  if (result == 0)
  {
      SHGetPathFromIDList(pidl, buffer);
      CoTaskMemFree(pidl);
  }

  return result;
}

...
char str[_MAX_PATH];
GetFolderLocation(CSIDL_LOCAL_APPDATA, str);
// now str contains "C:\Users\<user>\AppData\Local"
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...