Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带参数的StartService_C_Windows_Visual C++ - Fatal编程技术网

带参数的StartService

带参数的StartService,c,windows,visual-c++,C,Windows,Visual C++,我正在尝试将中的win32应用程序转换为服务。我使用CreateService()将it应用程序创建为服务(使用下面的代码) 如果实际应用程序中没有参数,我可以启动服务。如果我尝试用参数启动服务,那么这就是创建问题 LPCTSTR apszSvcArgv[32] = {"start","passwd"}; int nSvcArgc = 2; if(StartService(schService, nSvcArgc,apszSvcArgv)) { return TRUE; } 我试图在主程序

我正在尝试将中的win32应用程序转换为服务。我使用CreateService()将it应用程序创建为服务(使用下面的代码)

如果实际应用程序中没有参数,我可以启动服务。如果我尝试用参数启动服务,那么这就是创建问题

LPCTSTR apszSvcArgv[32] = {"start","passwd"};
int nSvcArgc = 2;
if(StartService(schService, nSvcArgc,apszSvcArgv))
{
  return TRUE;
}
我试图在主程序中转储传入的参数,它总是将参数no显示为1

我做错什么了吗?。是否可以将这样的参数传递给win32控制台应用程序


如果我错了,请纠正我。。提前感谢

您需要将args向量定义为const char(或wchar),然后将该向量传递给StartService

下面是VS中unicode程序的示例

const wchar_t *args[] = { L"arg1", L"arg2", L"arg3", L"arg4" };
StartService(schService, 4, args);

您不能通过调用magic
CreateService
函数将控制台应用程序作为服务运行。Windows服务是特殊类型的应用程序,专门设计为服务。感谢您的重播。但我有一些疑问,如果没有争论,我可以使用相同的方法创建和启动服务。创建后,服务名称将列在services.msc中,启动后,它将正确地进入任务管理器。埃文:我可以使用这项服务。我之所以有这个想法,是因为你能够做一些事情,并不意味着这是一个好主意,也不意味着它会起作用。
CreateService
函数实际上并不验证可执行文件是否被设计为服务,它只是假设您知道自己在做什么。我不知道你为什么怀疑我刚才说的话,很明显,你很难像你期望的那样工作。原因是服务与典型的应用程序大不相同。是的,互联网上有错误的信息。链接文章的第一段显示了对服务的严重误解。谢谢,你能帮我提供一些链接、步骤或示例,让我可以将我的应用程序转换为windows服务。我正在使用Cmy编写一个win32 console应用程序。问题是,由于第一个参数始终是服务名称,您是在
StartService()
中提供它,还是系统自动添加一个,因此在您的示例中,服务将看到5个参数?
const wchar_t *args[] = { L"arg1", L"arg2", L"arg3", L"arg4" };
StartService(schService, 4, args);