2014-12-08 60 views
1

我有一個要在Windows中作爲服務運行的可執行文件。由於該服務作爲本地系統運行,因此我應該編寫該程序使用的任何數據的文件夾。至於目前,我使用%LOCALAPPDATA%但當exe文件服務中運行它指向我程序作爲服務運行時獲取文件夾的路徑

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可以訪問的其他文件夾。?

回答

相關問題