设置注册表项以打开notepad ++

时间:2015-03-25 21:56:51

标签: powershell

我尝试使用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"

有什么建议吗?

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"