在windows服務的開發過程中,經常需要相對路徑來讀取一些配置文件什麼的。但是往往成功不了
這是因爲在服務程序的相對路徑並不是exe的路徑,而是服務控制程序的路徑
比如我的 服務程序exe路徑爲:D:\projects\TestServers\Release\service.exe
::GetCurrentDirectory(255,des2); // C:\Windows\system32
這需要用到一個windows函數
::GetModuleFileName(NULL,des,255); // D:\projects\TestServers\Release\service.exe
然後再對這個 ModuleFileName 來做一些操作
void getPath(std::string &fileName)
{
std::string name = fileName;
std::stringstream ss;
char des[512] = "";
GetModuleFileName(NULL, des, 512);
for (int i=strlen(des); i>=0; i--)
{
if (des[i] == '\\')
{
des[i] = '\0';
break;
}
}
ss << des;
ss << "\\";
ss << name;
fileName = ss.str();
}