Windows

如何在 PowerShell 中解除安裝多個系統資料庫配置單元?(訪問被拒絕錯誤)

  • July 16, 2013

我已經將幾十個系統資料庫配置單元載入為HKLM:\temp_$username\. 現在,當我嘗試跑步時,ls HKLM:\temp_* | %{reg unload $_}我得到了ERROR: Access is denied.

我正在執行具有提升權限的 PowerShell,並嘗試重新啟動 PowerShell ISE 以清除變數。我仍然收到錯誤。我可以使用 GUI 解除安裝蜂巢,並且可以為單個蜂巢執行命令reg unload HKLM\temp_jimbob(

是什麼導致訪問被拒絕錯誤,我該如何解決?

該命令ls HKLM:\temp_*是導致“訪問被拒絕”錯誤的原因。執行此命令會​​使每個所需的系統資料庫配置單元都打開並且reg程序無法訪問。這有點像第 22 條規則:沒有列表,蜂箱無法解除安裝,但列表一旦獲得就無法使用。

要解決此問題,請使用 Name 屬性,即 a[System.String]與 a [Microsoft.Win32.RegistryKey]

$foo = ls "hklm:\temp_*" | Select -ExpandProperty Name
foreach($bar in $foo)
{
   reg unload $bar
}

請注意,它必須是兩行。嘗試通過管道傳輸 Select 的輸出將導致相同的錯誤。

如果您仍然收到錯誤,可能值得使用[gc]::collect()、pick throughGet-Variables或重新啟動 PowerShell ISE 執行垃圾收集。

引用自:https://serverfault.com/questions/517354