将 .PDF 文件扩展名的默认应用程序设置为 Adob​​e 或 Edge?

将 .PDF 文件扩展名的默认应用程序设置为 Adob​​e 或 Edge?

我的主要目标是通过 PowerShell 打印.PDF文件。

我可以使用以下行来做到这一点Start-Process $Path -Verb Print,只要用户的默认.PDF文件应用程序是 Adob​​e Acrobat。

因此,为了实现从 PowerShell 打印,这是我预期的脚本伪代码:

- Get user's default app for .pdf
- Set user's default app for .pdf to Adobe Acrobat
- Print the .pdf file
- Set the user's default app for .pdf back to whatever they had it set to originally

但我不知道该怎么做。我最接近的方法是使用ftype命令提示符命令,但以下是我亲眼目睹的,它并不是一个解决方案:

当我的默认应用程序是 Adob​​e 时,打印可以正常工作。当我的默认应用程序是 Edge 时,打印不起作用,但返回结果ftype与我的默认应用程序是 Adob​​e 时完全相同。

在此处输入图片描述

有人知道如何通过 PowerShell 获取/设置默认应用程序吗?

答案1

我建议DanySys 的 Set-FTA(文件类型关联)为此:

Set-FTA AcroExch.Document.DC .pdf

但是,如果您只想通过 Adob​​e Reader 打印文件,请尝试以下命令:

# Open and go straight to the print dialog
AcroRd32.exe /p <filename>

答案2

好的,看来更改.pdf中的默认应用程序Settings将设置中的值

Computer\HKEY_USERS\[USER-ID]\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice

因此,这是一个 PowerShell 脚本,用于获取用户设置的默认应用的值.PDF

$User = New-Object System.Security.Principal.NTAccount($env:UserName)
$sid = $User.Translate([System.Security.Principal.SecurityIdentifier]).value
$key = "HKU:\${sid}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice"
if (Get-PSDrive HKU -ErrorAction SilentlyContinue) {
} else {
    New-PSDrive HKU Registry HKEY_USERS
}
(Get-ItemProperty -Path $key).ProgId

这使我能够获得默认的名称,如果我进入 RegEdit,并为我的用户删除该项的“设置值”的“拒绝”权限,那么我可以设置它,但默认情况下,用户对该项的权限是被拒绝的。

相关内容