我使用此方法: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对象上。
答案 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搜索传递参数到控制台应用程序..相同的理论适用..