Windows 服务 - 在“可执行文件的路径”中提供参数

2024-01-18

我不知道如何在 Windows 服务启动时将(常量)参数传递给它。我使用标准 .NET 类(例如 ServiceBase)来实现(并使用 ServiceProcessInstaller 和 ServiceInstaller 来安装)我的服务。

在 Windows 服务属性对话框(安装后)的常规选项卡上,有一个“可执行文件的路径”,我可以在其中看到一些标准 Windows 服务指定了命令行参数。System.ServiceProcess.ServiceBase.OnStart takes string[] args,我认为这将使这些参数能够从 .NET 代码中访问。

我可以设置 ServiceProcessInstaller 或 ServiceInstaller 上的一些属性来允许我将启动参数传递给我自己的服务,或者有人知道应该如何完成它?


嗯,距离你发帖大约 10 个月了,我也遇到了同样的问题。阅读此线程和其他线程后,我决定了解 .NET Framework 在幕后所做的事情,并验证没有记录的方法可以执行此操作。有;然而,这是一种非常简单的未记录的方法。在父 Installer 类中,重写 Install 方法,或实现 BeforeInstall 事件。无论使用哪一种,您都可以使用以下任一方法:

public override void Install(System.Collections.IDictionary stateSaver)
{
    base.Install(stateSaver);

    base.Context.Parameters["assemblyPath"] = string.Format("\"{0}\" /service", base.Context.Parameters["assemblyPath"]);
}

or:

private void Installer_BeforeInstall(object sender, InstallEventArgs e)
{
    base.Context.Parameters["assemblyPath"] = string.Format("\"{0}\" /service", base.Context.Parameters["assemblyPath"]);
}

“ assemblyPath”参数将使用 AssemblyInstaller 类中可执行文件的完整路径进行初始化。该参数的值将写入注册表中的 ImagePath 值。如果不存在引号,则将在该值周围放置引号,因此请确保将它们放置在需要的位置(即至少在初始值周围)。在上面的行中,我在执行文件路径周围加了引号,并在末尾添加了“/service”作为参数。

这将适用于使用该父 Installer 类的所有服务。如果您不想添加参数或需要不同参数的服务,则可以嵌套 Installer 类并将代码放在这些服务上,而不是放在根 Installer 类上。这没有在任何地方记录,将来可能会中断,并且可能不适用于非 Microsoft 版本的 .NET Framework,但它目前确实可以工作。

我希望这有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 服务 - 在“可执行文件的路径”中提供参数 的相关文章

  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • 如何在 C# 中以编程方式创建柔和的颜色?

    根据所需的颜色数量均匀分布地生成它们 如果指定的计数为 8 则看起来像这样 List
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 如何在没有 Visual Studio 的情况下将新文件添加到 .csproj 文件

    如何添加新文件到 csproj从命令提示符 我认为没有任何工具可以响应命令行上的 add project 命令来执行此操作 但我认为您可以幸运地创建一个程序 脚本来直接操作 csproj 文件的 XML 内容 csproj 文件的结构如下所
  • 解决找不到程序集的问题 |文件未找到异常 |融合日志

    我正在尝试将我的解决方案包 wsp 部署到 SharePoint 2007 环境 WSP 包含一个功能 该功能加载功能接收器类以在运行时部署计时器作业 在部署此 WSP 时 我不断得到 特征 fb631f6c 2c46 4ab5 b7b3
  • 托管 .NET 代码中的“访问冲突写入位置...”

    我收到以下异常 MqSearch exe 中 0x000007FE21AFE593 mscorlib ni dll 处出现未处理的异常 0xC0000005 写入位置 0x00000006609476FD 时出现访问冲突 代码是完全托管的
  • 如何让 LinqToSql 将“索引提示”传递给 sql server?

    由于我们不能相信我们的客户会更新 sql server 中的索引统计信息等 因此我们过去不得不使用索引提示 http www sql server performance com tips hints general p1 aspx 由于我
  • Sitecore - 隐藏功能区中的按钮

    我为特定内容项创建了上下文功能区 我有两个按钮 可以将项目 升级 或 降级 到某一类别 该部分只能有一个 是否可以根据某种隐藏代码中的内容状态隐藏其中一个按钮 我了解如何链接到 Click 事件 但我想知道是否有某种加载事件可供自定义功能区
  • 设置 Form.KeyPreview = true 的缺点?

    我想知道 Form KeyPreview 属性实际上有什么用处 它为什么存在以及将其设置为 true 会带来什么 风险 我想它一定有some负面影响 否则它根本不应该存在 或者至少默认情况下是正确的 EDIT 我很清楚what确实如此 我问
  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • .NET“默认行终止符”?

    有什么方法可以弄清楚 NET 使用什么作为其 默认行终止符 例如 StringBuilder AppendLine String 的文档表示 附加指定字符串的副本 后跟默认行终止符 NET 中的几个与文本相关的类引用相同的概念 有什么方法可
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • HttpWebRequest/HttpResponse:如何在响应中发送数据?

    我有一个客户端和一个服务器 在客户端我有 HttpWebRequest request HttpWebRequest WebRequest Create http localhost fa Default aspx request Meth
  • SQLite .NET 性能,如何加快速度?

    在我的系统上 约 86000 个 SQLite 插入需要长达 20 分钟 意味着每秒约 70 个插入 我要做数百万 我怎样才能加快速度 对每一行的 SQLiteConnection 对象调用 Open 和 Close 会降低性能吗 交易有帮
  • 如何在C#背后的代码中动态创建数据模板并绑定TreeView分层数据

    我有一个场景 其中树视图动态更改其数据模板和数据绑定定义 我在 XAML 中创建了一个树视图 如下所示
  • 如何消除字符串中的所有换行符?

    我需要删除字符串中出现的所有换行符 来自数据库 我使用下面的代码来做到这一点 value Replace r n Replace n Replace r 我可以看到至少有一个角色的行为就像行尾一样幸存了下来 字符代码是8232 http w
  • 在 SQL 2005+ 中,CLR 存储过程是否优于 TSQL 存储过程?

    我目前的观点是否定的 更喜欢 Transact SQL 存储过程 因为它们是重量更轻且 可能 性能更高的选项 而 CLR 过程允许开发人员进行各种恶作剧 然而最近我需要调试一些写得非常糟糕的 TSQL 存储过程 像往常一样 我发现许多问题是
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创

随机推荐

  • 绘制大规模的networkx图:数组太大

    我正在尝试绘制带有加权边的网络图 但现在我遇到了一些困难 正如标题所示 这张图确实很大 节点数量 103362 边数 1419671 当我尝试使用以下代码绘制该图时 pos nx spring layout G nx draw G node
  • 子图是重叠的轴标签[重复]

    这个问题在这里已经有答案了 我在 python 中创建了一个包含多个子图的图形 我还在图中的一些轴上添加了各种轴标签 举些例子 plt xlabel Phase circ fontsize 10 但我注意到 当生成最终图形时 其他子图可以重
  • 如何在所有ajax调用中向URL添加参数?

    我有一个使用 jQuery 的 Backbone 应用程序 并且想要附加一个sessionId所有 ajax 调用的 URL 参数 我怎样才能在 Backbone 或 jQuery 中做到这一点 也许以全局方式而不重写 Backbone S
  • 使用 Angular 2 生成 Docx 文件

    我正在使用 angular2 我想使用对象生成 docx 文件 我希望我的 docx 文件包含页脚 页眉 表格等 我能想到的最佳解决方案是首先创建一个 HTML 文件 然后将其转换为 docx 文件 但这似乎不对 有没有更简单 更方便的方法
  • 如何在 jasmine 规范中使用 $promise.then 模拟 AngularJS $resource

    I use resource设置一些API调用 在测试时我采用了注入的通用方法 q然后做 mockMyService doSomethingAsync andReturnValue q when successResponse 这已经很有效
  • xunit 以编程方式添加新测试/“[事实]”?

    我们有一个充满 JSON 文本文件的文件夹 需要将其设置为单个 URI 目前 这一切都是通过单个 xUnit Fact 完成的 如下所示 Fact public void TestAllCases PileOfTests pot new P
  • Xamarin.iOS 发布版本中的 Console.WriteLine 调用会发生什么情况?

    使用 XCode 开发 iOS 应用程序时 可以使用 NSLog 调用将信息写入控制台以进行调试 在 Xamarin iOS 中 可以使用 Console WriteLine 完成相同的操作 当运行应用程序的发布版本时 如果没有附加调试器
  • 如何让customAdapter填充gridview高度

    我正在开发数独应用程序 布局为 9x9 GridView 每个 GridView 包括 9 个由 customAdapter 提供的 Textview 我想让 9 个 TextView 填充每个 GridView 的高度 如何 This i
  • 为什么对于没有通过方法反射获取返回类型的 Task,Type.IsGenericType 返回 TRUE,而 typeof(Task).IsGenericTyp 返回 FALSE

    有人可以解释一下吗 根据文档是泛型类型 https learn microsoft com en us dotnet api system type isgenericparameter view netframework 4 7 2 指示
  • 原子引用的保证

    a 的语义是什么AtomicReference 如果我做 AtomicReference
  • 为什么空的 MongoDB 数据库这么大?

    当我使用命令创建新的 mongoDB 数据库实例时 mongod dbpath db where db是我在调用命令的目录中创建的文件夹 运行此命令并检查目录的大小后 我发现一切都结束了300MB大小 当其中没有数据时 这里发生了什么 谢谢
  • 如何配置 Spring Sockjs Java 客户端消息转换器

    我有一个使用 STOMP 的 SockJS Java 客户端 是基于这个https github com rstoyanchev spring websocket portfolio blob master src test java or
  • Ember.js 中的多种布局?

    来自 Rails 背景的您可以拥有多个布局 例如 匿名用户页面和经过身份验证的页面 Ember 可以做到这一点吗 我尝试在我的 UsersRouter 中声明一个新的 templateName 但没有成功 我还检查了本指南 http emb
  • 如何指定或获取 NativeScript 文本字段的资源 ID

    我们在我们的移动应用程序中使用带有 Angular 的 NativeScript 我想使用 Google Play 预发布报告功能 但我们的应用程序需要输入密码 Google Play 允许指定密码 但您需要一个资源名称 以便测试脚本可以识
  • .click() 在 IE11 中拒绝访问

    当尝试调用 click of an anchor tag to auto click网址 该代码在所有浏览器中都可以正常工作 除了Internet Explorer v11 任何帮助将不胜感激 var strContent a b c n1
  • C++ 中读取大型 CSV 文件的性能问题

    我需要读取许多大的 CSV 文件以在 C 中进行处理 范围从几 MB 到数百 MB 首先 我使用 fstream 打开 使用 getline 读取每一行并使用以下函数 分割每一行 template lt class ContainerT g
  • 持续集成时js的最佳打包策略?

    我需要打包所有的 js 但需要将其编辑到源代码管理中 有没有一个很好用的 ccnet 或 nant 插件 它可以让我打包我的 js 并在投入生产时将它们存储在相同的文件中 并不是真正寻找文件合并 只是缩小每个文件 这是我找到的最佳答案 它调
  • C++ std::atomic 变量的线程同步问题

    当下面的程序偶尔打印 坏 输出时 它会给我带来意想不到的行为 两个线程应该使用两个 std atomic 变量 s lock1 和 s lock2 进行同步 在 func2 中 为了将 s var 变量设置为 1 它必须以原子方式在 s l
  • Node.js 是否有相当于 Python 迭代器工具?

    我正在尝试移植一些使用 Python 的代码迭代器工具 https docs python org 2 library itertools html到 Node 但是我没有看到任何类似的东西 我正在专门寻找 itertools combin
  • Windows 服务 - 在“可执行文件的路径”中提供参数

    我不知道如何在 Windows 服务启动时将 常量 参数传递给它 我使用标准 NET 类 例如 ServiceBase 来实现 并使用 ServiceProcessInstaller 和 ServiceInstaller 来安装 我的服务