我有一个可在Windows中作为服务运行的可执行文件。由于服务作为本地系统运行,我应该写的文件夹应该是程序使用的任何数据。目前,我使用%LocalAppData%,但当exe作为Service运行时,它指向
C:\Windows\System32\config\systemprofile\AppData
我使用了以下代码:
std::string GetLocalAppDataPath()
{
HANDLE hfile;
TCHAR szPath[MAX_PATH];
if(SUCCEEDED(SHGetFolderPath(NULL,CSIDL_LOCAL_APPDATA,NULL,0, szPath)))
{
std::string path = boost::lexical_cast<std::string>(szPath);
boost::replace_all(path, "\\", "\\\\");
return path;
}
}
如果我将上述代码称为:
std::string app_data_path = GetLocalAppDataPath();
std::string log_folder_path = app_data_path + "\\\\lpa\\\\output\\\\";
我得到 C:\ WINDOWS \ system32 \ config \ systemprofile \ AppData \ Local \ lpa \ output \ ,而不是我自己的本地应用数据文件夹。那么我应该使用LocalSystem可以访问的其他文件夹吗?