使用登錄專案
此範例僅適用於 Windows 平臺。
由於登錄專案是機碼的屬性,因此無法直接流覽,因此在使用它們時,我們需要採取稍微不同的方法。
列出登錄專案
檢查登錄專案的方式有很多種。 最簡單的方式是取得與索引鍵相關聯的屬性名稱。 例如,若要查看登錄機碼 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
中項目的名稱,請使用 Get-Item
。 登錄機碼具有屬性,其泛型名稱為 「Property」 ,這是機碼中的登錄專案清單。 下列命令會選取 Property 屬性並展開專案,使其顯示在清單中:
Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId
若要以更容易閱讀的形式檢視登錄專案,請使用 Get-ItemProperty
:
Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir : C:\Program Files
CommonFilesDir : C:\Program Files\Common Files
ProgramFilesDir (x86) : C:\Program Files (x86)
CommonFilesDir (x86) : C:\Program Files (x86)\Common Files
CommonW6432Dir : C:\Program Files\Common Files
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesPath : C:\Program Files
ProgramW6432Dir : C:\Program Files
SM_ConfigureProgramsName : Set Program Access and Defaults
SM_GamesName : Games
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
RE\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
RE\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
密鑰的 Windows PowerShell 相關屬性全都加上 “PS”,例如 PSPath、PSPare、PSParentPath、PSChildName 和 PSProvider。
您可以使用 *.*
表示法來參考目前的位置。 您可以先使用 Set-Location
變更為 CurrentVersion 登錄容器:
Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
或者,您可以使用內 HKLM:
建的 PSDrive 搭配 Set-Location
:
Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion
接著 .
,您可以使用目前位置的表示法來列出屬性,而不指定完整路徑:
Get-ItemProperty -Path .
...
DevicePath : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir : C:\Program Files
...
路徑擴充的運作方式與文件系統內相同,因此您可以從這個位置取得使用Get-ItemProperty -Path ..\Help
的 HKLM:\SOFTWARE\Microsoft\Windows\Help
ItemProperty 清單。
取得單一登錄專案
如果您想要擷取登錄機碼中的特定專案,您可以使用數種可能的方法之一。 此範例會在 中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
尋找 DevicePath 的值。
使用Get-ItemProperty
,使用Path參數來指定索引鍵的名稱,並使用Name參數來指定DevicePath項目的名稱。
Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
DevicePath : C:\WINDOWS\inf
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
此命令會傳回標準 Windows PowerShell 屬性以及 DevicePath 屬性。
注意
雖然 Get-ItemProperty
具有 Filter、 Include 和 Exclude 參數,但無法用來依屬性名稱進行篩選。 這些參數是指登錄機碼,這些登錄機碼是專案路徑,而不是登錄專案,也就是項目屬性。
另一個選項是使用 reg.exe
命令行工具。 如需 的說明 reg.exe
,請在命令提示字元輸入 reg.exe /?
。 若要尋找 DevicePath 專案,請使用 reg.exe
,如下列命令所示:
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
DevicePath REG_EXPAND_SZ %SystemRoot%\inf
您也可以使用 WshShell COM 物件來尋找一些登錄專案,不過此方法不適用於大型二進位數據,或是包含反斜杠 (\
) 等字元的登錄項目名稱。 使用分隔符標記名稱附加至項目路徑 \
:
(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf
設定單一登錄專案
如果您想要變更登錄機碼中的特定專案,您可以使用數種可能的方法之一。 此範例會修改 底下的HKEY_CURRENT_USER\Environment
Path專案。 Path 專案會指定要尋找可執行檔的位置。
- 使用
Get-ItemProperty
擷取Path專案的目前值。 - 加入新的值,並將它與 區隔開
;
。 - 搭配
Set-ItemProperty
指定的機碼、專案名稱和值來修改登錄專案。
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath
注意
雖然 Set-ItemProperty
具有 Filter、 Include 和 Exclude 參數,但無法用來依屬性名稱進行篩選。 這些參數是指登錄機碼,也就是項目路徑,而不是登錄專案,也就是項目屬性。
另一個選項是使用命令行工具Reg.exe。 如需reg.exe的說明,請在命令提示字元輸入 reg.exe /?
。
下列範例會移除上述範例中新增的路徑,以變更 Path 專案。
Get-ItemProperty
仍然用來擷取目前的值,以避免必須剖析從 reg query
傳回的字串。 SubString 和 LastIndexOf 方法可用來擷取新增至 Path 專案的最後一個路徑。
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path.SubString(0, $value.Path.LastIndexOf(';'))
reg add HKCU\Environment /v Path /d $newpath /f
The operation completed successfully.
建立新的登錄專案
若要將名為 「PowerShellPath」 的新專案新增至 CurrentVersion 機碼,請使用 New-ItemProperty
搭配索引鍵的路徑、專案名稱和專案的值。 在此範例中,我們將採用 Windows PowerShell 變數 $PSHome
的值,它會儲存 Windows PowerShell 安裝目錄的路徑。
您可以使用下列命令將新專案新增至機碼,而 命令也會傳回新項目的相關信息:
New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -PropertyType String -Value $PSHome
PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
PSChildName : CurrentVersion
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0
PropertyType 必須是下表中 Microsoft.Win32.RegistryValueKind 列舉成員的名稱:
PropertyType 值 | 意義 |
---|---|
二進位 | 二進位資料 |
DWord | 有效 UInt32 的數位 |
ExpandString | 字串,可包含動態展開的環境變數 |
MultiString | 多行字串 |
String | 任何字串值 |
QWord | 8 個字節的二進位數據 |
您可以指定 Path 參數的值數組,將登入專案新增至多個位置:
New-ItemProperty -Name PowerShellPath -PropertyType String -Value $PSHome `
-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion, HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion
您也可以將 Force 參數新增至任何New-ItemProperty
命令,以覆寫既有的登錄專案值。
重新命名登錄專案
若要將 PowerShellPath 專案重新命名為 「PSHome」,請使用 Rename-ItemProperty
:
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome
若要顯示重新命名的值,請將 PassThru 參數新增至命令。
Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome -passthru
刪除登錄專案
若要刪除 PSHome 和 PowerShellPath 登錄專案,請使用 Remove-ItemProperty
:
Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應