Windows服务传递参数

时间:2011-12-19 16:35:26

标签: c# windows-services windows-installer

我使用此方法:How to make a .NET Windows Service start right after the installation?

帖子以&#34开头,逐步发布了#34;。如何在不使用注册表的情况下将参数传递给OnStart函数?

我可以在此方法Main(string[] args)上传递参数。我打电话给myapp.exe -install。 我想打电话给myapp.exe -install path="c:/bla bla"

并将路径参数移动到" OnStart"。我的OnStart存在于示例中的YourService对象上。

2 个答案:

答案 0 :(得分:1)

来自http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart.aspx ...

  

args 参数数组中的参数可以在。中手动设置   服务控制台中服务的属性窗口。该   在控制台中输入的参数不会保存;他们被传递给了   从服务开始时一次性服务   控制面板。服务所必须存在的参数   自动启动可以放在ImagePath字符串值中   服务的注册表项   (HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\)。   您可以使用以下命令从注册表中获取参数   GetCommandLineArgs方法,例如:string [] imagePathArgs =   Environment.GetCommandLineArgs();

使用您的示例,您希望将-install path="c:/bla bla"放入服务控制台,但这并不令人满意,因为它不会被保存,即您已经拥有每次开始服务时都要这样做。你可以去注册表路线,但你说你不想这样做。想到的唯一其他选项是某种服务配置文件。

答案 1 :(得分:0)

您将传递应用程序名称  myapp.exe / i然后在你的params检查检查是否/ i是在命令行args中你指定的应用程序路径你可以通过路径以及周围的“”做google搜索传递参数到控制台应用程序..相同的理论适用..