【问题标题】:How do I set windows service "command line" parameters through the Parameters subkey?如何通过 Parameters 子键设置 windows 服务“命令行”参数?
【发布时间】:2015-03-29 05:58:20
【问题描述】:

msdn 上的 windows 服务 c# 演练表明该服务可以通过 HKLM\System\CurrentControlSet\Services\ 中的“参数子项”接收命令行样式参数。现在,我假设这意味着一个子文件夹看起来像树中文件夹的子级,而不仅仅是文件夹中名为“Parameters”的某种类型的值(我尝试使用单个和多个字符串值,没用)。我在注册表中看到的其他服务也有一个参数子文件夹。这是我第一次写真正的windows代码:P。

但是,我放入 Parameters 子项(文件夹的东西)中的任何值都没有作为 args 传递给我的服务。是因为我从服务管理器手动启动服务吗?参数是否仅在自动启动时传递?还是我只是做错了?我一直在使用字符串值(REG_SZ)。

该服务将在嵌入式 Windows 设备上运行,我们希望通过自动远程注册表编辑将每个单元配置一次。

【问题讨论】:

  • 是的,我知道将参数添加到 下的 ImagePath 值的技巧,但如果有另一个实际系统可以这样做,那似乎很恶心。如果它是唯一的选择,我会使用它。
  • 另外,我刚刚发现通过服务管理器中的属性对话框添加参数。很奇怪,我在那里添加的参数也没有显示出来,尽管我在注册表中添加到 ImagePath 末尾的参数是:S.
  • 服务管理器属性对话框中的参数在调用 StartService() 时使用,并传递给 ServiceMain() 而不是 main()。 Parameters 子项用于其他配置设置,如果您使用此方法,我相信您的服务应该从注册表本身读取它们。 (这通常被认为比使用命令行参数更可取。)

标签: c# windows service parameters registry


【解决方案1】:

去吧。错过了演练中编辑安装程序代码以自动更改 ImagePath 行的步骤。我会把它留在这里,以防其他人遇到同样的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2011-09-05
    • 2016-12-11
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多