如何通过命令行/脚本触发系统级默认程序设置对话框?
触发系统级文件扩展名默认设置对话框的脚本方案
核心解决方案:调用Shell32的OpenAs_RunDLL函数
直接通过rundll32.exe调用shell32.dll中的OpenAs_RunDLL导出函数,并指定目标扩展名,就能弹出带有「始终使用此应用打开」选项的系统级设置对话框——这正是文件属性窗口里「更改...」按钮的底层逻辑,无需管理员权限,完全适配你的需求。
Batch脚本示例
@echo off :: 替换为需要修复的目标扩展名,比如 .pdf、.txt set "TARGET_EXT=.pdf" rundll32.exe shell32.dll,OpenAs_RunDLL %TARGET_EXT%
PowerShell脚本示例
# 替换为需要修复的目标扩展名 $targetExt = ".pdf" Start-Process -FilePath "rundll32.exe" -ArgumentList "shell32.dll,OpenAs_RunDLL $targetExt"
关于OpenWith.exe的说明
你之前尝试的OpenWith.exe <文件名>仅会触发单次打开的临时选择窗口,因为OpenWith.exe本身没有公开参数支持直接调出系统级默认设置对话框。而rundll32.exe shell32.dll,OpenAs_RunDLL才是官方提供的、用于唤起扩展名默认设置入口的标准方式。
效果验证
运行脚本后会弹出Windows标准的「打开方式」对话框,勾选「始终使用此应用打开[扩展名]文件」并选择正确程序,即可完成系统级的扩展名关联设置——此操作仅需用户自身权限,不受GPO限制(Windows默认允许普通用户修改个人默认程序关联)。
内容的提问来源于stack exchange,提问作者TripleD
相关产品推荐
相关产品推荐

