PowerShell:在默认txt编辑器中打开文件
我正试图找到一种方法,使用PowerShell在默认文本编辑器中打开一个非txt文件(在本例中为hosts文件) 查看后我取得了一些进展,但是PowerShell:在默认txt编辑器中打开文件,powershell,registry,Powershell,Registry,我正试图找到一种方法,使用PowerShell在默认文本编辑器中打开一个非txt文件(在本例中为hosts文件) 查看后我取得了一些进展,但是$txt_编辑器结果始终返回Notepad.exe,即使Notepad++是我的txt文件默认编辑器 $hosts\u file=“$env:windir\System32\drivers\etc\hosts” $txt_editor=((Get-ItemProperty-Path'Registry::HKEY_CLASSES\u ROOT\txtfile
$txt_编辑器
结果始终返回Notepad.exe,即使Notepad++是我的txt文件默认编辑器
$hosts\u file=“$env:windir\System32\drivers\etc\hosts”
$txt_editor=((Get-ItemProperty-Path'Registry::HKEY_CLASSES\u ROOT\txtfile\shell\open\command')。(默认值)。.trimend(“%1”)
启动进程-文件路径$txt\u编辑器-动词运行方式-参数列表$hosts\u文件
这还会返回Notepad.exe:
(获取项目属性-路径'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList'-Name a)。a
如果我在Registry Editor中查看上面的位置,我确实会看到Notepad++列表中的键d
,但我不知道如何从只查看注册表键来判断默认文本编辑器是什么,因为我在Reddit中看到的两个解决方案不起作用
我使用的是Windows 10,我正在寻找的解决方案将返回实际的默认文本编辑器文件位置,以便可以使用它打开如上所示的文件。Start命令(它是启动进程的别名)将在其默认编辑器中启动任何文件
start .\MyCoolbmp.bmp
#Opens in MSPaint
start .\SomeNotes.txt
#Opens in Notepad
start .\SomeJason.json
#Opens in Visual Studio, go ahead and grab a coffee...
如果我不得不猜测您的注册表项不起作用的原因,那就是您提供的注册表项是用于系统的注册表项,而用户的默认编辑器是从Windows 7及更高版本存储在HKEY_CURRENT_user配置单元中,位于以下路径Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice'
以下是相关值:
$txtKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice"
Get-ItemProperty -Path $txtKey | tee-object -variable txtPath
Hash : noCJnt8yX5Y=
ProgId : VSCode.txt
这与HKCR:\应用程序中的信息相关联,可以在其中找到真实路径
get-itemproperty Registry::\HKEY_CLASSES_ROOT\$($txtPath.ProgId)\shell\open\command
(default) : "C:\Program Files\Microsoft VS Code\Code.exe" "%1"
#...
如果获取该(默认)值,那么现在就获得了与文本文件关联的编辑器的真实路径
阅读有关该主题的更多内容,并详细介绍关联的工作原理。请注意,Start
是Start Process
命令的别名。您可能还想查看调用项
命令。@MikeShepard调用项时,调用项
似乎使用默认操作,但我不想使用默认操作打开无扩展名的主机文件,因为这不会在文本编辑器中打开。这个答案不能解决您的问题吗?它向您展示了如何使用用户文本编辑器打开文件,而不考虑文件extension@mbomb007-这是有道理的。我只是想指出一个类似的命令。@FoxDeploy不,它不起作用。试着自己运行一个没有扩展名的文件。我想用默认的TXT编辑器打开一个非TXT文件<代码>启动C:\Windows\System32\drivers\etc\hosts
将要求用户选择一个程序。