带参数的StartService

时间:2012-06-11 20:07:54

标签: c windows visual-c++

我正在尝试将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控制台应用程序。

如果我错了请纠正我..提前致谢

1 个答案:

答案 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);