【发布时间】: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