服务可以通过命令行启动,亦可以部署到管理工具-》服务,运行服务的时候,要取.exe文件的当前路径,并将路径解析为 ‘\\’的。
WCHAR szEngineName[100] = L"UUUU";
WCHAR szEnginePath[MAX_PATH] = L"";
::GetModuleFileNameW(NULL, szEnginePath, MAX_PATH);wchar_t* pTmp = _tcsrchr(szEnginePath, _T('\\')); //取最后一个\的指针。
pTmp++;
wcscpy(szEngineName+wcslen(szEngineName), L".exe");
wcscpy(pTmp, m_cEngineName);
pTmp += wcslen(m_cEngineName);
*pTmp = 0;
//当前得到的字符串为"E:\YYY\UUUU.exe";
std::wstring org = L"\\";std::wstring repl = L"\\\\";
std::wstring szwstrPath = szEnginePath;
int pos = szwstrPath.find(org);
while(pos != -1)
{
szwstrPath.replace(pos, org.length(), repl);
pos = szwstrPath.find(org, pos+repl.length());
}
printf("当前服务运行路径 %s", szwstrPath.c_str().);
//当前得到的字符串为"E:\\YYY\\UUUU.exe";