2009-10-22 75 views
0

删除注册表项后,我尝试在C#中重新创建注册表项。重新创建我刚刚删除的注册表项时出错

我有时会收到错误:

“试图在已标记为删除注册表项非法操作”。

我试图在重新创建它之前拖延,但没有帮助。

任何提示?

回答

2

该键还有一个打开的句柄,所以即使它已被标记为删除,它仍未被清除。因此,您可以关闭任何引用该键的句柄,或者更好地修改它,而不是先删除它。

0

您是否试过拨打Close()? 如果没有,你可以试试Flush()

0

作为described on TechNet,这发生在某些东西仍然具有打开的键的句柄时。所有句柄关闭后,该键将被删除并可以重新创建。

1

您必须Close()所有引用的关键,然后才能重新创建它。

-1

这里的关键短语:

marked for deletion.

它尚未删除!显然你不能重新创建它,但它会与(仍然)现有的密钥冲突。因此,关闭或刷新任何C#对象都不是问题:您需要说服操作系统清除注册表本身。我知道这样做的唯一方法就是重新启动电脑。

现在它可能是你自己的程序,阻止操作系统完成删除操作。但是,这又可能是另一回事。

+0

这是不正确的(但最后一句变得接近)。 OP只是有一个打开的钥匙把手,所以它不能被销毁。 – 2009-10-22 18:17:05

+0

从Close()的MSDN页面: “如果密钥的内容已被修改,则关闭密钥并将其刷新到磁盘。” – 2009-10-22 18:18:32

相关问题