如何以编程方式设置每种文件类型的默认应用程序?

如何以编程方式设置每种文件类型的默认应用程序?

我想摆脱已安装应用程序的桎梏,将我的大多数应用程序作为便携版本分享到云端硬盘中。所以我的想法是,每当我坐在新设备上时,我只需同步我的云端硬盘并启动某种进程,安装我的设置。

我所说的安装是指设置我的 Windows 设置等。我想设置每个文件类型的默认应用程序。例如将.txt文件绑定到d:\cloud\notepad++\notepad++.exe

下面是我尝试执行此操作的简化脚本。我删除了ErrorActions其他内容,以使其更具可读性。

$exe = "d:\cloud\notepad++\notepad++.exe"
$app = "notepad++.exe"
$ext = ".txt"

# Remove old associations
Remove-Key -Key "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\$ext"
Remove-Key -Key "HKCR:\$ext"
Remove-Key -Key "HKCR:\$app"

# Setup new associations
cmd /c assoc $ext=$app
cmd /c ftype $app="$exe" "%1" "%*"
Set-ItemProperty -Path "HKCR:\$app" `
                    -Name "(Default)" `
                    -Value "Text file" `
                    -Type String  

这很管用。现在每当我尝试打开文件.txt时,它都会询问我使用哪个应用程序并预​​先选择 notepad++。
好吧,这有点烦人,但我可以忍受。虽然。当我检查时,always use this app to open .txt files它会被忽略。我总是看到这个对话框。

在此处输入图片描述

答案1

虽然这篇文章已有 3 年多历史,但 SetUserFTA 可能对你有帮助。请参阅参考资料这里这里

对于我来说,以编程方式设置 Windows 10 中的默认浏览器是可行的,并且它也适用于任何其他文件类型。

编辑这是我所做的:

  1. 从以下位置下载最新的 SetUserFTA这里并解压缩以提取 SetUserFTA.exe。

  2. 创建一个包含以下内容的 BAT 文件:

    i. 将目录 (cd) 更改为 SetUserFTA.exe 所在的文件夹 (路径)。

    ii. 一些行/指令定义每种文件类型所需的默认关联。例如,要将 Firefox 设置为我的默认 Web 浏览器,我添加了以下几行:

    REM web browser: Firefox
    SetUserFTA  http FirefoxHTML
    SetUserFTA  https FirefoxHTML
    SetUserFTA  .htm FirefoxHTML
    SetUserFTA  .html FirefoxHTML
    
    REM ... add any other file extensions here
    
  3. 运行 BAT 文件,可以按需运行,也可以使用任务计划程序安排运行。确保从用户上下文“以最高权限”运行 BAT 文件(它需要该权限才能更新 Windows 注册表)。

相关内容