我读过这篇文章向服务传递参数其中说要编辑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 中的 ImagePath 注册表项,但是当我重新启动服务时,这种方法不起作用。
如果我使用参数手动启动服务,它会正确运行,但重新启动服务无法保留参数,并且它也无法从注册表中加载。
针对缺少应用程序配置文件的情况,还有其他选择吗?
答案1
@HopelessN00b 链接的答案有@Aaron 的以下评论:
通过对话框输入的参数仅在服务启动时使用手动。
也就是说,参数不会使用“正常”方法传递给服务(例如,作为命令行参数);必须编写服务才能读取 ServiceManager 传递的参数。换句话说,尝试argv[]
在服务内访问将导致一个空数组。
而是将服务的可执行文件包装在包装器中,然后包装器将使用适当的参数调用实际的服务。