![读取注册表中启动程序的活动/非活动状态](https://linux22.com/image/1499315/%E8%AF%BB%E5%8F%96%E6%B3%A8%E5%86%8C%E8%A1%A8%E4%B8%AD%E5%90%AF%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%B4%BB%E5%8A%A8%2F%E9%9D%9E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81.png)
在我目前正在开发的软件中,我们遇到了一种情况,需要判断某个软件是否被列为启动程序。
为了判断 msconfig 工具是否启用了此程序,我使用了建议的答案这个问题。
但是,并非所有软件在启用时都使用二进制值“02 00 00 00...”,我们遇到了一个软件,其值为“06 00 00 00...”。
为了进一步理解它,我通过在禁用软件之前和之后读取软件的注册表值来分析这两种情况:
- 预期情景从
02 00 00 00 00 00 00 00 00 00 00 00
变为03 00 00 00 17 79 BD 01 17 D9 D1 01
; - 意外的情况从
06 00 00 00 00 00 00 00 00 00 00 00
变为07 00 00 00 71 C9 33 AE 16 D9 D1 01
我倾向于假设第一个字节包含正确答案。在这两种情况下,位 1 都从 0 变为 1。看来这个位包含活动/非活动值。但我仍然不太确定。
所以我的问题是:我可以假设这个位包含正确的值吗,或者有人对此有更好的答案吗?
答案1
根据您的示例,似乎只需设置第一个字节的第 0 位(从零开始)。因此,本质上,只需将 1 添加到第一个十六进制字节(或最右边的半字节,如果这样更容易思考的话)即可禁用(即在启动期间停用该应用程序)。
因此,如果第一个字节是:X0、X2、X4 或 X6,它将分别变成 X1、X3、X5 或 X7,其中 X 是无关紧要的。