使用OpenSCManager加载未运行Windows安装的服务数据库

使用OpenSCManager加载未运行Windows安装的服务数据库,c,winapi,windows-services,offline,C,Winapi,Windows Services,Offline,我正在从正在工作的机器中提取(从IT意义上讲)硬盘驱动器,需要调整注册表中它们的服务配置。在用于编辑注册表中服务的Windows APIOpenSCManager中,有一个文档稀少的lpDatabaseName参数。如果一个正在运行但未运行的Windows安装被安装为驱动器E:\,我可以使用它吗?(正在运行的Windows安装安装安装在驱动器C:\上) 我可以做些什么,例如OpenSCManager(空,“e:\Windows\WHAT\u是什么文件名”,SC\u MANAGER\u ALL\u

我正在从正在工作的机器中提取(从IT意义上讲)硬盘驱动器,需要调整注册表中它们的服务配置。在用于编辑注册表中服务的Windows API
OpenSCManager
中,有一个文档稀少的
lpDatabaseName
参数。如果一个正在运行但未运行的Windows安装被安装为驱动器
E:\
,我可以使用它吗?(正在运行的Windows安装安装安装在驱动器
C:\
上)

我可以做些什么,例如
OpenSCManager(空,“e:\Windows\WHAT\u是什么文件名”,SC\u MANAGER\u ALL\u访问)
。然后使用手柄编辑驱动器
E:\
上的服务配置?
第二个参数的文件路径是什么?i、 e.我在驱动器
e:\
上的哪个位置可以找到此服务数据库文件?

根据,lpDatabaseName只能为空,“ServicesActive”或“ServicesFailed”。

我严重怀疑它。据我所知,SCM功能通过LPC与SCM的运行实例进行通信;我严重怀疑这些设备能否用于脱机安装。然而,这不是火箭科学。你可以直接摆弄离线系统的注册表来达到预期的效果。是的,我自己也这么想,但是,如果Windows的版本是一样的呢?数据库不是也一样吗?
OpenSCManager()
lpDatabaseName
参数的用途是什么?它通常是如何使用的?它可能是一个向后兼容的残余。AFAIK lpDatabaseName参数只能为NULL或SERVICES\u ACTIVE\u DATABASE。还有一个定义服务\u失败的\u数据库,但尝试打开它会导致错误\u数据库\u不存在。传递任何其他字符串将导致错误\u无效\u名称。下面是一些描述该参数的协议。