Windows 服务如何确定其 ServiceName?

2024-02-25

我查了一下,找不到一个简单的问题:

Windows 服务如何确定其启动的 ServiceName?

我知道安装可以破解注册表并添加命令行参数,但从逻辑上讲,这似乎是这样should没有必要,所以才有这个问题。

我希望比注册表黑客更干净地运行单个二进制文件的多个副本。

Edit:

这是用 C# 编写的。我的应用程序Main()入口点做不同的事情,具体取决于 命令行参数:

  • 安装或卸载服务。命令行可以提供非默认的 ServiceName并可以改变工作线程的数量。
  • 作为命令行可执行文件运行(用于调试),
  • 作为“Windows 服务”运行。在这里,它创建了我的一个实例服务库-衍生的 类,然后调用System.ServiceProcess.ServiceBase.Run(实例);

目前,安装步骤将服务名称和线程数附加到图像路径在注册表中,以便应用程序可以确定它的 ServiceName。


From: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=387024 https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=387024

这是一个 WMI 解决方案。覆盖ServiceBase.ServiceMainCallback()可能也有用,但这似乎对我有用......

    protected String GetServiceName()
    {
        // Calling System.ServiceProcess.ServiceBase::ServiceNamea allways returns
        // an empty string,
        // see https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=387024

        // So we have to do some more work to find out our service name, this only works if
        // the process contains a single service, if there are more than one services hosted
        // in the process you will have to do something else

        int processId = System.Diagnostics.Process.GetCurrentProcess().Id;
        String query = "SELECT * FROM Win32_Service where ProcessId = " + processId;
        System.Management.ManagementObjectSearcher searcher =
            new System.Management.ManagementObjectSearcher(query);

        foreach (System.Management.ManagementObject queryObj in searcher.Get()) {
            return queryObj["Name"].ToString();
        }

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

Windows 服务如何确定其 ServiceName? 的相关文章

  • 为什么通过派生类对基类的引用与 :: - 运算符不明确?

    所以我想知道为什么以下钻石问题的代码片段无法编译 我知道这个问题通常是通过虚拟继承来解决的 我不是故意使用它的 该代码只是为了展示我的问题 即为什么编译器称此不明确 因此 我在 struct Base 中声明了两个成员变量 因为这两个子类
  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 如何在win32中使用GetSaveFileName保存文件?

    我编写此代码是为了获取 fileName 来保存我的文件 include stdafx h include
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 在远程节点上的 ssh 命令中使用 SED

    我编写了一个脚本来 ssh 到某些节点并运行sed节点内的命令 脚本看起来像 NODES compute 0 3 for i in NODES do echo i ssh i sed i s 172 16 48 70 172 20 54 1
  • Spark from_json 也不例外

    我正在使用 Spark 2 1 scala 2 11 我想将具有定义模式的 json 格式字符串从一个数据帧加载到另一个数据帧中 我尝试了一些解决方案 但最便宜的是标准列函数 from json 我尝试了一个例子 https jacekla
  • AWS Lambda 处理来自 DynamoDB 的流

    我正在尝试创建一个消耗 dynamoDB 表中的流的 lambda 函数 但是我想知道处理在执行过程中可能因某些错误而未处理的数据的最佳实践是什么 例如 我的 lambda 失败并且丢失了部分流 这是重新处理丢失数据的最佳方法 这是为你处理
  • Ruby 中的波形可视化

    我即将启动一个记录和编辑音频文件的项目 并且我正在寻找一个好的库 最好是 Ruby 但会考虑 Java 或 NET 以外的任何库 来实现波形的动态可视化 有谁知道我应该从哪里开始搜索 有大量数据要流入浏览器 Flash 或 Flex 图表可
  • 有没有办法转换客户 ID 及其最近的订单日期?

    我有一个查询 它为我提供了所有客户及其最后三个订单日期 EX CustomerId DateOrdered 167 2006 09 16 01 25 38 060 167 2006 09 21 13 11 53 530 171 2006 0
  • 默认按钮大小?

    如何创建按钮控件 使用CreateWindow of a BUTTON窗口类 是否具有与其他 Windows 应用程序一致的标准系统范围尺寸 尤其是高度 我当然应该考虑 DPI 和可能的其他设置 Remark Using USE CW DE
  • Gitolite 3 - 设置仓库描述(未授权)

    我正在使用 Gitolite 3 6 ssh git host info hello you this is got Git running gitolite3 v3 6 1 6 gdc8b590 on git 1 7 10 4 R W m
  • 阻止 ScrollView 将焦点设置在 EditText 上

    Android 的 ScrollView 当滚动或滑动时 喜欢在 EditText 是其子级之一时设置其焦点 当您滚动然后释放时会发生这种情况 有什么办法可以阻止这种行为吗 我几乎尝试了所有我能想到的以及我在 StackOverflow 上
  • iOS 14 Widget 闪烁或冻结,chronod 崩溃

    我已经为我的应用程序实现了一个小部件扩展 即 iOS 14 小部件 使用 WidgetKit 通常 该小部件工作得很好 但有时它会进入反复闪烁并最终冻结的状态 我尝试将调试器连接到小部件进程 但它没有捕获任何崩溃或异常 然而 我确实在我的设
  • 如何在 C 预处理器中生成错误或警告?

    我有一个必须仅在调试模式下编译的程序 测试目的 如何让预处理器阻止在 RELEASE 模式下进行编译 放置在任何地方 ifndef DEBUG error Only Debug builds are supported endif 以供参考
  • 如何在 Xamarin.Forms 中使用 ToolBarItems 的本机平台图标(以编程方式)?

    我拥有的 我有一个Xamarin Forms应用程序与ToolBar ActionBar在安卓上 Navigation Bar在 iOS 上 内ToolBar我有一个ToolBarItem删除某些东西 我想要的是 For the ToolB
  • 仅从 Bash 脚本中的路径获取文件名 [重复]

    这个问题在这里已经有答案了 如何只获取没有扩展名和路径的文件名 以下内容没有给我扩展名 但我仍然附加了路径 source file filename no ext source file 许多类 UNIX 操作系统都有一个basename出
  • VS Code 显示“mvn”未被识别为内部或外部命令

    我正在尝试使用 VS Code 创建一个 Maven 项目 但是当我运行命令时 它显示 mvn is not recognized as an internal or external command operable program or
  • 如何在Python中为接口分配IP地址?

    我有 python 脚本为我的无线和有线接口设置 IP4 地址 到目前为止 我使用subprocess命令如下 subprocess call ip addr add local 192 168 1 2 24 broadcast 192 1
  • 使用 async/await 时如何更好地处理已释放的控件

    考虑在 UI 线程上运行的这段代码 dividends await Database GetDividends if IsDisposed return Do expensive UI work here earnings await Da
  • 具有多重身份验证的 AWS CodeCommit。不断出现致命错误:无法访问..请求的 URL 返回错误:403

    有什么问题 我的 IAM 用户有两个策略 管理员访问 and 强制多因素身份验证 When 强制多因素身份验证策略已附加 从 Windows 命令行 尝试对存储库执行任何操作时出现 403 错误 例如 git clone 当我删除策略时 我
  • Rails 使用活动存储读取 csv 文件数据

    我有这门课 并且正在使用主动存储 class MaterialsUpload lt ApplicationRecord has one attached csv file end 这是附件
  • 在一个可执行文件中使用 C# 编写的可自删除应用程序

    是否可以用 C 创建一个应用程序 使其能够在某种情况下删除自身 我需要为我的应用程序编写一个更新程序 但我不希望在更新过程后留下可执行文件 有一个官方的 Net OneClick 但由于与我的 HTTP 服务器不兼容以及 OneClick
  • Python 3 imaplib.fetch TypeError:无法将字节连接到 int

    我有一些代码可以获取 IMAP 电子邮件 并且在 Python 2 中运行得很好 在 Python3 中 我收到以下错误 回溯 最近一次调用最后一次 文件 mail py 第 295 行 位于项目 返回消息 x 文件 mail py 第 1
  • Windows 服务如何确定其 ServiceName?

    我查了一下 找不到一个简单的问题 Windows 服务如何确定其启动的 ServiceName 我知道安装可以破解注册表并添加命令行参数 但从逻辑上讲 这似乎是这样should没有必要 所以才有这个问题 我希望比注册表黑客更干净地运行单个二