C# 如何设置windows服务;命令行“;参数通过参数子键?

C# 如何设置windows服务;命令行“;参数通过参数子键?,c#,windows,service,parameters,registry,C#,Windows,Service,Parameters,Registry,msdn上的windows服务c#演练说,该服务可以通过HKLM\System\CurrentControlSet\Services\中的“参数子项”接收命令行样式的参数。现在,我假设这意味着树中文件夹的子文件夹,而不仅仅是文件夹中名为“Parameters”的某种类型的值(我尝试了使用单个和多个字符串值,但都不起作用)。我在注册表中看到的其他服务也有一个Parameters子文件夹。这是我第一次编写真正的windows代码:P 但是,我在参数子键(foldery thing)中输入的值没有一个

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

但是,我在参数子键(foldery thing)中输入的值没有一个作为参数传递给我的服务。是因为我正在从服务管理器手动启动服务吗?参数是否仅在自动启动时传递?还是我只是做错了?我刚刚使用了字符串值(REG_SZ)


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

Derp。错过了演练中编辑安装程序代码以自动更改ImagePath行的步骤。如果其他人也犯了同样的错误,我将把它留在这里。

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