2009-10-28 60 views
0

我正在为我的工作区编写程序,并且因为我们在受硬盘驱动器损坏的计算机上工作,所以我们有时需要在启动之前与其注册表配合工作。修改非本地注册表配置单元

最值得注意的是,我们正试图修复源自注册表配置单元的0x7b错误,该错误控制了默认的硬盘驱动器被损坏,并且计算机无法启动。

微软有一个Knowledge Base entry关于如何手动完成它,但我们希望自动化它。这就是说,所需要的是我必须在另一个硬盘上编辑注册表配置单元。

如何修改位于与C#不同的硬盘驱动器上的注册表配置单元?其他硬盘驱动器将包含完整的操作系统,但目前不会运行。

回答

1

我假定您可以读取目标驱动器上的文件。您需要使用RegLoadKey() Win32 API(或者如果有的话,则是.NET相同)来将配置单元加载到本地计算机注册表中的密钥中。在您传递给RegLoadKey()的密钥下操作该配置单元的内容。

Then RegUnloadKey()

阅读有关RegLoadKey()的文档 - 您可能需要使用权限来让事情正常工作。

+0

如果其他硬盘安装在F:上,我需要提供哪些路径才能通过RegLoadKey访问它? – Malfist 2009-10-28 20:13:40

+0

注册表配置单元只是普通文件(但可能有不同寻常的属性 - 我不记得了)。如果我记得正确的'\ windows \ system32 \ config \ system'和'\ windows \ system32 \ config \ software'包含大部分机器级别的东西,如果我没有记错的话。 – 2009-10-28 21:19:51

+0

我想通了。 RegLoadKey(0x80000002,“OLD_SYSTEM”,“F:\ Windows \ System32 \ config \ system”); – Malfist 2009-10-28 21:32:17