如何获取正在运行的Windows服务应用程序的命令行参数?

时间:2015-11-03 13:45:22

标签: c# .net windows service

我们有一个Windows服务应用程序。当我们安装服务时,我们传入命令行参数来捕获服务使用的一些值。 例如,这里-r用于标识它是一个安装。

 MyService.exe -r /url=value1 /time=value2

这些值存储在本地注册表中。

现在我们希望这些值可配置。也就是说,当我们停止并启动服务时,我们应该能够做类似的事情(-s来识别服务的开始)

 MyService.exe -s /time=newvalue

现在,是否可以从命令行读取这个新值?。

2 个答案:

答案 0 :(得分:1)

假设您的EXE入口点类似于

static void Main(string[] args)

您可以使用具有所有命令行参数的args数组作为数组。

如果您没有/无法在入口点获取它,您可以使用

string[] args = Environment.GetCommandLineArgs();

获取命令行参数。

答案 1 :(得分:1)

Windows服务有两种类型的参数:

  1. 在进程启动命令行上传递的参数。您 可以使用Process Explorer轻松搞定。
  2. 传递给ServiceBase.OnStart函数的参数。这是SC START [arguments]启动服务时使用的内容。方法中传递的参数与“命令行进程参数”不同。因此,SC start中传递的参数仅为服务本身所知。