要使用PowerShell实现查询打开某个文件的默认应用程序,可以按照以下步骤:
1.获取文件类型关联
首先需要获取该文件类型的关联程序,可以使用以下命令:
$ext = ".txt"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'
上述代码中,我们首先指定文件的扩展名为.txt
,然后使用$key
变量获取该扩展名对应的注册表项。利用PowerShell的Get-ItemProperty
命令,我们可以获取到该注册表项下的Shell\Open\Command
子项,并且通过(default)
的方式访问该子项的默认值。
2.解析关联程序
接下来需要解析出关联应用程序的路径,可以使用以下命令:
$command = $default -replace ('^.*(?="|'')|".*$|'') # 去除引号
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)" # 划分参数
$appPath = $commandArgs[0]
上述代码中,我们使用了一个正则表达式的方式,去掉了关联应用程序路径中的双引号(如果存在的话)。然后,我们使用-split
命令将关联应用程序及其参数划分为不同的数组元素。
示例一:查找txt文件默认应用程序
通过上述步骤,我们得到了txt文件的默认应用程序路径,可以使用以下命令将结果输出出来:
$ext = ".txt"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'
$command = $default -replace ('^.*(?="|'')|".*$|'')
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)"
$appPath = $commandArgs[0]
Write-Output "文件类型 $ext 的默认应用程序为:$appPath"
运行上述代码后,我们会得到如下输出:
文件类型 .txt 的默认应用程序为:C:\WINDOWS\system32\NOTEPAD.EXE
表示txt文件的默认应用程序是Windows自带的记事本。
示例二:查找jpg文件默认应用程序
如果我们要查找jpg文件的默认应用程序,只需要修改上述代码中的文件扩展名即可:
$ext = ".jpg"
$key = "HKEY_CLASSES_ROOT\$ext"
$default = (Get-ItemProperty -Path "$key\Shell\Open\Command").'(default)'
$command = $default -replace ('^.*(?="|'')|".*$|'')
$commandArgs = $command -split " (?=(?:[^""]|""[^""]*"")*$)"
$appPath = $commandArgs[0]
Write-Output "文件类型 $ext 的默认应用程序为:$appPath"
运行上述代码后,我们会得到如下输出:
文件类型 .jpg 的默认应用程序为:C:\Program Files\Windows Photo Viewer\PhotoViewer.dll
表示jpg文件的默认应用程序是Windows自带的照片查看器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PowerShell实现查询打开某个文件的默认应用程序 - Python技术站