我试图找到一种方法来打开一个 * 非txt * 文件(在这种情况下,主机文件)在默认的文本编辑器使用PowerShell。
在看到this Reddit post之后,我取得了一些进展,但是$txt_editor
的结果总是返回Notepad.exe,尽管Notepad++是我的txt文件默认编辑器。
$hosts_file = "$env:windir\System32\drivers\etc\hosts"
$txt_editor = ((Get-ItemProperty -Path 'Registry::HKEY_CLASSES_ROOT\txtfile\shell\open\command').'(Default)').trimend(" %1")
Start-Process -FilePath $txt_editor -Verb Runas -ArgumentList $hosts_file
这还将返回Notepad.exe:
(Get-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList' -Name a).a
如果我在注册表编辑器中查看上面的位置,我确实看到Notepad++列出了d
键,但我不知道如何从注册表键中判断默认的文本编辑器是什么,因为我在Reddit中看到的两个解决方案不起作用。
我使用的是Windows 10,我正在寻找的解决方案将返回实际的默认文本编辑器文件位置,这样就可以用它来打开一个文件,如上图所示。
1条答案
按热度按时间gstyhher1#
Start命令(
Start-Process
的别名)将在其默认编辑器中启动任何文件。如果我不得不猜测为什么你的不起作用,那就是你给的注册表项是用于系统的注册表项,而用户的默认编辑器则存储在HKEY_CURRENT_USER配置单元中,从Windows 7开始,在这个路径
Windows\CurrentVersion\Explorer\FileExts\.txt\UserChoice'
。以下是相关值:
这与HKCR:\Applications中的信息有关,可以在其中找到真正的路径。
如果您获取 *that(Default)值 *,现在您就得到了与文本文件关联的编辑器的真实路径。
要阅读更多关于这个主题的内容,请参阅this blog post is pretty good,并详细介绍关联如何工作。