我正在尝试加载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,则注册表卸载正常。
答案 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