【问题标题】:Windows service pass parametersWindows 服务传递参数
【发布时间】:2011-12-19 16:35:25
【问题描述】:

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

帖子以“发布分步程序”开头。如何在不使用注册表的情况下将参数传递给 OnStart 函数?

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

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

【问题讨论】:

    标签: c# windows-services windows-installer


    【解决方案1】:

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

    args 参数数组中的参数可以在 服务控制台中服务的属性窗口。这 在控制台中输入的参数不会被保存;它们被传递给 当服务从 控制面板。服务运行时必须存在的参数 自动启动可以放在ImagePath字符串值中 服务的注册表项 (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\)。 您可以使用以下方法从注册表中获取参数 GetCommandLineArgs 方法,例如:string[] imagePathArgs = Environment.GetCommandLineArgs();.

    使用您的示例,您希望将 -install path="c:/bla bla" 放在服务控制台中,但这并不令人满意,因为它不会被保存,也就是说,您必须在每次服务启动时都这样做。你可以走注册路线,但你说你不想那样做。唯一想到的其他选项是某种服务配置文件。

    【讨论】:

      【解决方案2】:

      您将传递应用程序名称 myapp.exe /i 然后在您的参数检查中检查 /i 是否在该代码中的命令行参数中您分配的应用程序路径您可能会传递路径以及由“”包围的路径 在传递参数时进行谷歌搜索控制台应用程序.. 同样的理论适用..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 2013-06-07
        相关资源
        最近更新 更多