使用reg unload会导致访问被拒绝错误

时间:2016-03-15 17:13:03

标签: powershell

我正在尝试加载ntuser.dat并查看其中的一部分,在我查看了我需要的内容之后我无法使用reg卸载它说“访问被拒绝”

我看了,似乎我需要使用[gc] :: Collect(),但这也不起作用。

reg load HKLM\user C:\Users\user\NTUSER.DAT
$result = Get-ChildItem "hklm:\user\Software"
reg unload HKLM\user

如果我选择不执行Get-ChildItem,则注册表卸载正常。

2 个答案:

答案 0 :(得分:0)

您正在使用Get-ChildItem打开处理程序而不是清除它。

在卸载之前添加$result.Handle.Close(),这将关闭之前创建的句柄。 此外,您可以添加[gc]::Collect()以清洁手柄,然后再彻底卸载注册表。

答案 1 :(得分:0)

仅仅打[gc]::collect()在我这一边也是不够的。但是随后简单的Start-Sleep就能解决问题:

reg load HKLM\user C:\Users\user\NTUSER.DAT
$result = Get-ChildItem "hklm:\user\Software"

[gc]::collect()
Start-Sleep -Seconds 2
reg unload HKLM\user