为服务的 FailureAction 设置什么 REG-BINARY

2024-02-18

我有一个服务,我想在注册表中设置 FailureAction 的数据值。目前注册表中已设置值。使用 RegKey.SetValue("FailureActions", Value) 设置值;

我想知道:

1)这些字节的Value如何对应服务的恢复选项(例如如何在注册表中查找特定顺序意味着将“第一次失败”设置为“重新启动服务”)

2)我还需要更改注册表 FailureAction ,它将对应于“后续失败”为“重新启动服务”

这是我使用试错法的发现:

a) 手动更改服务恢复设置,然后更改注册表项。复制该值并在代码中使用。它设置了“后续失败”

b)更改代码中的原始值。它设置了“后续失败”

但 a) 和 b) 的值不匹配,但如果我右键单击服务并查看恢复选项,我会看到相同的结果。为了理解这一点,我想知道问题 1) 和 2) 的答案。

感谢您的评论\线索。


为了解释 FailureActions 注册表项的数据值中字节的含义,我将举这个例子:

该表示中的字节对应于以下结构:

typedef struct _SERVICE_FAILURE_ACTIONS {
    DWORD     dwResetPeriod;
    LPTSTR    lpRebootMsg;
    LPTSTR    lpCommand;
    DWORD     cActions;
    SC_ACTION *lpsaActions;
} SERVICE_FAILURE_ACTIONS, *LPSERVICE_FAILURE_ACTIONS;

前四个字节80 51 01 00的值是dwResetPeriod结构体的成员。如果没有故障,则在此时间后将故障计数重置为零。它以秒为单位计算。在此示例中,重置周期为 0x15180 秒(因为小端字节序)。以十进制表示,它相当于 86400 秒或等于 24 小时。因此,如果 24 小时内没有发生故障,则故障计数将重置为零。

接下来的四个字节00 00 00 00相当于lpRebootMsg。有关该结构成员和下一个结构成员的更多信息可以找到here https://msdn.microsoft.com/en-ca/library/windows/desktop/ms685939(v=vs.85).aspx

接下来的四个字节00 00 00 00相当于lpCommand.

接下来的四个字节03 00 00 00相当于cActions。该成员是元素的数量lpsaActions大批。在本例中我们有 3 个元素。

接下来的四个字节14 00 00 00相当于lpsaActions这是一个指向类型数组的指针SA_ACTION.

最后,01 00 00 00 60 EA 00 00 01 00 00 00 60 EA 00 00 00 00 00 00 00 00 00 00是类型数组的内容SC_ACTION被指出lpsaActions。我们有这个结构的 3 个实例,对应于 3 行字节。结构SC_ACTION声明如下:

typedef struct _SC_ACTION {
    SC_ACTION_TYPE Type;
    DWORD          Delay;
} SC_ACTION, *LPSC_ACTION;

更多信息关于SC_ACTION and SC_ACTION_TYPE可以被找寻到here https://msdn.microsoft.com/en-ca/library/windows/desktop/ms685126(v=vs.85).aspx.

所以,第一行01 00 00 00 60 EA 00 00意思是::“如果出现故障,请重新启动服务(01 00 00 00) 60 秒后 (60 EA 00 00== to 0xEA60 ms == 60000 ms == 60 sec)。”第二行意思相同。第三行意思是“如果失败,不采取任何行动(00 00 00 00) 0 秒后 (00 00 00 00)"

这是如何运作的?每次服务失败时,服务控制器都会增加失败计数N并采取行动N-1在指向的数组中指定lpsaActions。在我们的例子中,服务第一次失败时,N增加到 1,控制器将执行索引为 的操作0这意味着,60 秒后重新启动服务。第二次就失败了N增加到 2 并且动作N-1 = 1采取这意味着,60 秒后重新启动服务。第三次服务失败时,控制器执行数组中的最后一个操作,在我们的例子中是不采取任何操作。如果N大于cActions,服务控制器重复数组中的最后一个操作。在这种情况下,服务不再启动。

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

为服务的 FailureAction 设置什么 REG-BINARY 的相关文章

  • 通过 SocketCAN 进行 boost::asio

    我正在考虑利用升压阿西奥 http www boost org doc libs 1 49 0 doc html boost asio html从a读取数据套接字CAN http en wikipedia org wiki SocketCA
  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • 在 Xamarin 中隐藏软键盘

    如何隐藏软键盘以便在聚焦时显示Entry在 Xamarin forms 便携式表单项目中 我假设我们必须为此编写特定于平台的渲染器 但以下内容不起作用 我创建自己的条目子类 public class MyExtendedEntry Entr
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 如何在 C# 控制台应用程序中将修饰符(ctrl、alt、shift)按键捕获为单个按键?

    Console ReadKey 仅在按下 正常 键时捕获输入 然后将修饰符 如果有 附加为键信息的一部分 如何将单个修饰键注册为输入 提供了一种解决方案这个链接 https blogs msdn microsoft com toub 200
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐