程序作为服务运行时获取文件夹的路径

时间:2014-12-08 08:38:48

标签: visual-c++ service

我有一个可在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可以访问的其他文件夹吗?

1 个答案:

答案 0 :(得分:1)