How to run exe as window service using c#
本问题已经有最佳答案,请猛点这里访问。
我正在尝试将一个exe文件作为窗口服务运行。我以前是这样手动操作的:
1 | sc create TestService binPath="C:\MyExePathWhichIsToBeRunAsWindowService" |
它可以正常工作,当我看到我能够找到的服务时,现在必须使用C代码来做同样的事情。
代码应该要求用户输入exe文件的路径,并且该文件必须作为窗口服务运行,并且必须提供给该窗口服务的名称。因此,这两件事用户将在运行时输入,这对我来说是一项简单的任务,但一旦我得到了,那么我将如何从C代码运行下面的命令?
1 | sc create TestServiceNameUsrEntered binPath="path user entered for exe at run time" |
有人能帮我吗?
编辑:请注意,用户将始终输入ServiceApplication exe文件,而不是任意文件
你应该看看
1 | Process.Start("sc", String.Format("create "{0}" binPath="{1}"", serviceName, binPath)); |
你可以看一下托普谢夫。
如果您想自己从头开始,可以查看hostInstaller.cs,它只需添加所需的注册表项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using (RegistryKey system = Registry.LocalMachine.OpenSubKey("System")) using (RegistryKey currentControlSet = system.OpenSubKey("CurrentControlSet")) using (RegistryKey services = currentControlSet.OpenSubKey("Services")) using (RegistryKey service = services.OpenSubKey(_settings.ServiceName, true)) { service.SetValue("Description", _settings.Description); var imagePath = (string)service.GetValue("ImagePath"); _log.DebugFormat("Service path: {0}", imagePath); imagePath += _arguments; _log.DebugFormat("Image path: {0}", imagePath); service.SetValue("ImagePath", imagePath); } |