我尝试使用ISE运行此脚本,并且还尝试以管理员身份在命令行上运行它。它冻结在“Remove-ItemProperty”行。我试图删除该步骤,但随后它会在下一步“Set-ItemProperty”冻结。看起来New-Item系列工作正常。
if (Test-path "HKCR:\")
{
}
else
{
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
}
Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
param([string]$zipfile, [string]$outpath)
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}
Unzip "npp.6.7.5.bin.zip" “C:\Notepad++”
New-Item -Type String "HKCR:\*\shell\Open With Notepad++"
New-Item -Type String "HKCR:\*\shell\Open With Notepad++\command"
Remove-ItemProperty "HKCR:\*\shell\Open With Notepad++\command" -name "(Default)"
Set-ItemProperty "HKCR:\*\shell\Open With Notepad++\command" -name "(Default)" -value "C:\\Notepad++\\notepad++.exe %1"
有什么建议吗?
答案 0 :(得分:0)
使用ItemProperty
命令时,它将*解释为通配符。它没有冻结,它正在寻找HKCR的每个子项“shell \ Open With ......”等。
要强制它将整个事物解释为字符串路径,您需要使用-LiteralPath开关:
New-Item -Type String "HKCR:\*\shell\Open With Notepad++"
New-Item -Type String "HKCR:\*\shell\Open With Notepad++\command"
Set-ItemProperty -LiteralPath "HKCR:\*\shell\Open With Notepad++\command" -name "(Default)" -value "C:\\Notepad++\\notepad++.exe %1"