Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell:在默认txt编辑器中打开文件_Powershell_Registry - Fatal编程技术网

PowerShell:在默认txt编辑器中打开文件

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

我正试图找到一种方法,使用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\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
将要求用户选择一个程序。