如何在安装而不是每次启动时一次性地将参数传递给Windows服务

Fra*_*ois 19 windows parameters service command-line install

我们有一个Windows服务应用程序,可以接受命令行参数,如:

MyService -option 
Run Code Online (Sandbox Code Playgroud)

到目前为止,当我们想要使用参数启动服务时,我们可以从"服务属性"对话框(在"启动参数"框中)或使用命令手动执行此操作

sc start MyService -option  
Run Code Online (Sandbox Code Playgroud)

我们想要的是一种使用此参数"永久"安装服务的方法,这样用户只需每次都可以启动/停止它而无需设置参数.

顺便说一句,在ImagePath注册表项中添加参数不起作用,也没有像这样安装:

MyService -option /install
Run Code Online (Sandbox Code Playgroud)

更新:感谢您到目前为止的答案,这有助于我完善问题.
我想要实现的是在同一个可执行文件中有多个服务的情况下,将参数设置为服务级别本身(与属性一样).binpath配置选项仅仅是更新注册表中的ImagePath条目.这不是特定于服务的.

Rem*_*anu 13

sc config MyService binPath= MyService.exe -option
Run Code Online (Sandbox Code Playgroud)

更新

各个服务参数存储在密钥的注册表中HKLM\SYSTEM\CurrentControlSet\Services\<serviceName>\Parameters.我不确定参数是如何传递给服务的.我相信 SCM读取这些值然后在它调用StartService它时将它们传递给ServiceMain回调.

  • ServiceMain的规范说,在该编辑框中输入的参数适用于用户手动启动***时***.用户单击"确定"后不会保存它们,并且在自动启动服务时不会使用它们. (3认同)
  • 不要忘记引号 sc config MyService binPath="MyService.exe option" (3认同)

Raj*_*ore 6

把参数放在配置文件中怎么样?

  • 如果你想在同一个.exe中托管多个服务,那将无法工作,如有问题的更新澄清.你选择哪个配置文件? (2认同)