- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一项服务,我想在注册表中为其设置 FailureAction 的数据值。当前在注册表中设置了值。使用 RegKey.SetValue("FailureActions", Value) 设置值;
我想知道:
1) 这些字节的Value如何对应于服务的恢复选项(比如如何在注册表中找出特定的序列意味着将'First failure'设置为'Restart the Service')
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
接下来的四个字节 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 00lpsaActions
指向的 SC_ACTION
类型数组的内容。我们有这个结构的 3 个实例对应于 3 行字节。结构 SC_ACTION
声明如下:
typedef struct _SC_ACTION {
SC_ACTION_TYPE Type;
DWORD Delay;
} SC_ACTION, *LPSC_ACTION;
有关SC_ACTION
和SC_ACTION_TYPE
的更多信息,请参见here .
因此,第一行 01 00 00 00 60 EA 00 00
表示:“如果出现故障,请在 60 后重启服务 (01 00 00 00
)秒(60 EA 00 00
== 到 0xEA60 毫秒 == 60000 毫秒 == 60 秒)。第二行意思相同。第三行表示“在失败的情况下,在 0 秒(00 00 00 00
)后不采取任何操作(00 00 00 00
)”
这是如何运作的?每次服务失败时,服务 Controller 都会增加失败计数 N
并采取 lpsaActions
指向的数组中指定的操作 N-1
。在我们的例子中,第一次服务失败时,N
递增到 1, Controller 将执行由 0
索引的操作,这意味着在 60 秒后重新启动服务。第二次失败时,N
增加到 2 并采取操作 N-1 = 1
,这意味着在 60 秒后重新启动服务。服务第三次失败时, Controller 执行数组中的最后一个操作,在我们的例子中是不采取任何操作。如果 N
大于 cActions
,则服务 Controller 重复数组中的最后一个操作。在这种情况下,服务不再启动。
关于c# - 为服务的 FailureAction 设置什么 REG-BINARY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462623/
我对以下树的术语感到困惑,我一直在研究树,但无法区分这些树: a) 完全二叉树 b) 严格二叉树 c) 完整二叉树 请帮我区分这些树。这些树何时何地在数据结构中使用? 最佳答案 完美的树:
我正在检查数字系统并在它们之间进行转换。 我认为十六进制值比二进制使用更少的位,这是有道理的,但最终十六进制值不是存储为位吗?这似乎最终打败了目的。 最佳答案 几乎在所有情况下,计算机使用的所有数据最
任何人都可以在 Cudd 包上指出一些好的 Material 吗?我在这里寻找一些简洁的事情。位于 http://vlsi.colorado.edu/~fabio/CUDD/ 的那个似乎没有对此事做出
我正在检查数字系统并在它们之间进行转换。 我认为十六进制值比二进制使用更少的位,这是有道理的,但最终十六进制值不是存储为位吗?这似乎最终打败了目的。 最佳答案 几乎在所有情况下,计算机使用的所有数据最
在我的应用程序中,我需要序列化一个包含任意数据类型的向量,在本例中是一个 Doubles 列表。为了序列化我正在导入 Data.Vector.Binary 的向量。 在 GHCi 中加载模块时出现以下
我尝试通过 sqlalchemy 将二进制文件存储到 postgresql 中,并从客户端上传文件。 对错误消息的一点谷歌把我带到 this source file :“包装的对象不是字节或缓冲区,这
我从表(源)中执行 INSERT SELECT,其中每列都是 VARCHAR 数据类型。 其中一列存储二进制数据,例如 '0003f80075177fe6' 我插入的目标表具有相同的列,但具有正确的数
无法简单地将二进制文件复制到 Linux 机器。哇!我今天觉得很蠢!以下是从默认镜像和 utah.edu 下载的二进制包的 tar.gz 中的文件列表: -rwxr-xr-x 1 ec2-user e
我正在阅读关于 Binary search 的不同 Material ,我不清楚它是一个贪婪的二进制文件(在我看来它不是)或者,它可以是一个具有某些特定实现的贪婪算法吗? 如果它可以是贪心的,它有什么
我见过这样写的代码: ifstream fin; fin.open("largefile.dat", ifstream::binary | ifstream::in); 现在这让我感到困惑,上面的代码
binary(10) vs char(10)character set binary有什么区别? 还有varbinary(10) vs varchar(10)字符集二进制? 它们在所有 MySQL 引
binary(10) vs char(10)character set binary有什么区别? 还有varbinary(10) vs varchar(10)字符集二进制? 它们在所有 MySQL 引
我尝试将一些数据插入到从 mysql 中的另一个表检索的表中,该表的数据类型为 BINARY(20)。 提取的数据位于变量$binary['hash']; /l÷ˆ8Ô]¿\µK prepare("I
在我的一个站点上,我有一个主用户表,其中包含每个用户的唯一用户 ID、电子邮件地址、密码等。 我需要开始跟踪很多与每个用户相关的二进制标志,比如他们是否确认了他们的电子邮件,他们是否发布了消息,他们是
在最近 SO discussion我展示了一个需要修剪顶点 6 和 7 的二叉分类树: 下面是我使用的代码: KaryTree[9, 2, VertexLabels -> {1 -> "Blood
请解释一下,对于以下查询,在 Mysql 中哪个会更快? SELECT * FROM `userstatus` where BINARY Name = 'Raja' [OR] SELECT * FRO
我通过定义 ngram_vectorizer = CountVectorizer(binary=True) 和 ngram_vectorizer = CountVectorizer(binary=Fa
在 C++ 中搜索文件读取示例时,我注意到许多示例使用 std::ios::binary 与 std::ifstream::binary std::ios::beg 与 your_file_strea
我在这里和其他论坛上看到过旧帖子,其代码与下面的代码类似,但无法弄清楚其中的一部分来自哪里。 let Source = Table.FromRows(Json.Document(Binary.
#include #include #define SIGBAD(signo) ((signo) = NSIG) int sigaddset(sigset_t *set, int signo
我是一名优秀的程序员,十分优秀!