【问题标题】:Command to find default program related to file(.pdf) using command line in windows OS在 Windows 操作系统中使用命令行查找与文件(.pdf)相关的默认程序的命令
【发布时间】:2013-05-21 04:35:52
【问题描述】:

是否有任何命令可以让我发现用户已选择特定程序(例如 Adob​​e reader/Adobe acrobat)作为 Windows 中特定文件扩展名(例如 .pdf)的默认程序?

更具体地说:

  • 如果我从文件属性中选择adobe reader 作为默认PDF viewer
  • 字符串viewer1 = "Command .pdf"(在命令提示符下运行)
  • 然后我从文件属性改为acrobat → 更改默认程序
  • 字符串viewer2 = "Command .pdf"(在命令提示符下运行)

所以,viewer1 != viewer2

我在 Java swing 中工作,所以如果有任何库或方法可以找到选择为 .pdf 文件的默认程序,这对我也有帮助。

是否存在任何注册表项,用于存储特定文件扩展名 (.pdf) 的默认程序路径?

【问题讨论】:

  • 你想达到什么目的?如果只想用默认应用打开PDF文件,可以使用Desktop#open方法
  • 哥们,我用过Desktop.getDesktop().open(docFile)这个代码,但是安装了Foxit Reader后运行不均匀。所以在这里写一个问题。寻找操作级别的解决方案。 :)

标签: java windows swing cmd registry


【解决方案1】:

已编辑

好的,所以我在这里错过了一部分。它由两个命令组成。

  1. assoc 获取与扩展名的文件类型关联,例如.jpg=jpegimage
  2. ftype 获取默认处理程序 ftype jpegimage

希望对您有所帮助。我想你可以通过管道传输这两者,但我不知道在 Windows 中是如何完成的。

【讨论】:

  • 感谢您的回答,但它会为两种情况返回 AcroExch.document(更改 .pdf 文件的默认程序之前和之后)。
  • 这是我能想到的最好的。我认为没有任何内置的 cmd 函数,除非它是 powershell 的一部分。
  • 不知道高手有没有办法!!我从很多天开始寻找它
  • 我想我有答案了,等一下
  • 伙计,它开始工作了,它显示了该程序的路径,但我在安装“foxit reader”“assoc .pdf”后发现了一个新问题,只返回“FoxitReader.Document”。所以我想我只需要使用 java 库......谢谢你的帮助,伙计:)
【解决方案2】:

与给定扩展关联的默认命令可以这样确定:

for /F "tokens=2 delims==" %a in ('assoc .pdf') do ftype %a

如果您想在批处理文件中使用它,请将 %a 更改为 %%a

但是,通过文件属性手动覆盖关联命令似乎存储在其他位置(具体而言,在键 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoiceProgid 值中),因此@987654326 不会检测到它@。您可以像这样从注册表中读取它:

reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice /v Progid

【讨论】:

  • 我的 PC 中有 Adob​​e Reader。然后我安装了 Adob​​e Acrobat。现在我正在更改我的偏好以在 Adob​​e Reader 中打开 .pdf 文件。现在我正在使用你的命令,但它显示我 acrobat 的路径,虽然它应该返回 Adob​​e Reader 的路径。 :(
猜你喜欢
  • 1970-01-01
  • 2013-06-19
  • 2019-05-13
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 2011-07-10
相关资源
最近更新 更多