我正在尝试将win32应用程序转换为服务。我使用CreateService()将其作为服务创建(使用下面的代码)。
SC_HANDLE schService = CreateService
(
schSCManager, /* SCManager database */
pName, /* name of service */
pName, /* service name to display */
SERVICE_ALL_ACCESS, /* desired access */
SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS , /*service type*/
SERVICE_AUTO_START, /* start type */
SERVICE_ERROR_NORMAL, /* error control type */
pPath, /* service's binary */
NULL, /* no load ordering group */
NULL, /* no tag identifier */
NULL, /* no dependencies */
NULL, /* LocalSystem account */
NULL
); /* no password */
如果实际应用程序中没有参数,我可以启动该服务。如果我尝试使用参数启动服务,那么它会产生问题。
LPCTSTR apszSvcArgv[32] = {"start","passwd"};
int nSvcArgc = 2;
if(StartService(schService, nSvcArgc,apszSvcArgv))
{
return TRUE;
}
我试图将传入的参数转储到主程序中,并且它总是将参数no显示为1.
我做错了吗?是否可以将这样的参数传递给win32控制台应用程序。
如果我错了请纠正我..提前致谢
答案 0 :(得分:2)
你需要将args向量定义为const char(或wchar),然后将向量传递给StartService。
这是VS
中的unicode程序的示例const wchar_t *args[] = { L"arg1", L"arg2", L"arg3", L"arg4" };
StartService(schService, 4, args);