Windows 服务的“WOW64”注册表值有什么作用?

问题描述 投票:0回答:2

Windows 服务注册表中的“WOW64”值有何作用,该值位于:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

我附上了截图。

这是我的问题:我创建了一个服务

<myserviceexe> /install

看起来就像屏幕截图中的那样。 Service可执行文件是用32位编译的并且运行良好。

之后我手动创建了第二个服务


sc create myservice binpath=C:\myservice.exe start=auto

第二个服务也是以 32 位编译的(但与第一个服务完全不同),并且在使用第二个命令创建时运行良好。但是,当创建第二个服务时,注册表中没有 WOW64 条目。如果我手动添加此条目(只是出于测试的好奇心),该服务会抛出一个非常非常奇怪的错误“ERROR_MORE_DATA 234:有更多数据”(无论这意味着什么)(https://learn.microsoft. com/de-de/windows/win32/debug/system-error-codes--0-499-

有人可以解释一下WOW64条目是做什么的吗?我在网上找到的信息绝对为零。我知道 WOW64 通常意味着什么:二进制文件是 32 位二进制文件,并且在 32 位环境中运行。但这与服务有什么关系?为什么在注册表中创建 WOW64 条目时我的第二个服务不运行,尽管它是 32 位二进制文件?

windows-services registry 32bit-64bit
2个回答
0
投票

我查看了从 ms-sysinternals 中使用进程监视器启动第二个服务时发生的情况,并注意到当程序加载我手动创建的 WOW64 注册表项时发生了缓冲区溢出。然后我注意到我在注册表中创建了一个 QWORD 而不是 DWORD xD

当使用 DWORD(正如你应该的那样)时,第二个服务也可以正常运行。


0
投票

我也想知道。某个地方必须有关于服务控制器的 WOW64 值中各个位的含义的描述。

© www.soinside.com 2019 - 2024. All rights reserved.