我目前正在开发一个Windows服务(开始这是一件好事)。 最大的问题是我怎样才能得到开始参数字段中的参数(没有做手动的课程)。
所以我想看到的是以下。 如果发生以下情况,安装该服务后,我希望它。
服务被安装并且启动参数被设置。
如何做这样的事情(已经浏览了StackOverflow,但它不符合我想要的)
我问这个问题的原因如下:服务是GUI和接收后端之间的通信层的一部分。 如果后端位置不同(例如,另一个IP地址),则该服务需要具有相应的新地址。
如果你想有一些更多的信息,请问(不要下降的职位,如果不是顺序'只要问:)')
提前致谢
在更新你的问题之后,我明白你正在努力完成什么。 据我目前所知,无法使用注册表来设置这些启动参数。 您必须从服务控制台手动执行或使用安装程序。 当您查看涵盖ServiceBase.OnStart( MSDN ServiceBase.OnStart方法 )的MSDN页面时,它清楚地指出:
在OnStart方法中处理服务的初始化参数,而不是在Main方法中。 args参数数组中的参数可以在服务控制台中的服务的属性窗口中手动设置。 在控制台中输入的参数不会被保存。 当服务从控制面板启动时,它们被一次性传递给服务。 在服务自动启动时必须存在的参数可以放在服务注册表项(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \)的ImagePath字符串值中。 您可以使用GetCommandLineArgs方法从注册表中获取参数,例如:string [] imagePathArgs = Environment.GetCommandLineArgs();
事情是,你将仍然需要跟踪这些注册表设置,当删除服务。 因此,这里提供的链接( “我作为服务运行” )也可能有帮助。
使用sc.exe
:
c:\>sc config <myservice> binPath="\path\to\myservice.exe -param -param"
在你的OnStart()
或你的服务线程中使用类似于:
string myArg = ConfigurationManager.AppSettings["MyArg"]
你已经添加了你的App.Config
<appSettings> <!-- My keys --> <add key="MyArg" value="xxx"/> </appSettings>