C# 重新创建刚删除的注册表项时出错

C# 重新创建刚删除的注册表项时出错,c#,registry,C#,Registry,删除注册表项后,我尝试在C#中重新创建它 我有时会出错: “试图对已标记为删除的注册表项执行非法操作。” 我试着在重新创建之前延迟,但没有帮助 有什么建议吗?你打过电话吗? 否则,您可以尝试。因为,当某个键的句柄仍然打开时,就会发生这种情况。关闭所有句柄后,该密钥将被删除并可以重新创建。该密钥仍有一个打开的句柄,因此即使已将其标记为删除,也尚未清除。因此,您可以关闭引用该键的任何句柄,或者更好的是,只需修改它而不是先删除它。您必须close()所有对该键的引用,然后才能重新创建它。关键短语如下:

删除注册表项后,我尝试在C#中重新创建它

我有时会出错:

“试图对已标记为删除的注册表项执行非法操作。”

我试着在重新创建之前延迟,但没有帮助

有什么建议吗?

你打过电话吗?
否则,您可以尝试。

因为,当某个键的句柄仍然打开时,就会发生这种情况。关闭所有句柄后,该密钥将被删除并可以重新创建。

该密钥仍有一个打开的句柄,因此即使已将其标记为删除,也尚未清除。因此,您可以关闭引用该键的任何句柄,或者更好的是,只需修改它而不是先删除它。

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

关键短语如下:

标记为删除

它还没有被删除!显然,您不能重新创建它,但它会与(仍然)现有的密钥冲突。因此,关闭或刷新任何C#对象都不是问题:您需要说服操作系统刷新注册表本身。我所知道的唯一确定的方法就是重新启动计算机

现在可能是您自己的程序阻止操作系统完成删除。但话说回来,这可能是另外一回事。

这是不正确的(但最后一句很接近)。OP只是有一个打开的键句柄,因此它还不能被销毁。在Close()的MSDN页面中:“关闭键并在其内容被修改时将其刷新到磁盘。”