无忧启动论坛

标题: 讨论用SetUserFTA命令行更改默认应用程序效果? [打印本页]

作者: 9zhmke    时间: 2023-8-21 11:33
标题: 讨论用SetUserFTA命令行更改默认应用程序效果?
本帖最后由 9zhmke 于 2023-8-21 11:35 编辑

从这个网页看到关于ProgID的传说:
https://www.winhelponline.com/blog/set-default-browser-file-associations-command-line-windows-10/
通过命令行更改默认应用程序和文件关联,有没人试用过这个效果?兼容性如何?以下,上述网址机翻结果:

通过命令行更改默认应用程序和文件关联[color=var(--contrast-2)]最后更新日期:2023 年 7 月 31 日
摘要:本文介绍了如何在 Windows 10 中使用命令行更改默认应用程序或文件关联。这可以通过名为 SetUserFTA 的命令行工具来完成。

在 Windows 10 中,只能使用默认应用程序或手动打开方式对话框来为登录用户帐户设置每用户文件关联。如果您尝试使用脚本或批处理文件更改用户默认注册表项,Windows 10 会将[color=var(--accent)]文件关联重置为 Windows 默认值;您会看到烦人的[color=var(--accent)]应用程序默认值已重置通知。
微软表示,[color=var(--accent)]应用程序不得写入存储UserChoice用户默认关联设置的注册表项。这是因为必须由用户而不是程序来控制。程序之间相互竞争并任意改变特定于用户的关联将不会是良好的用户体验。该UserChoice密钥是受保护的位置,ProgID 值通过哈希值进行验证。
当您使用“默认应用程序”或“打开方式”设置关联时,Windows 10 会为每个文件类型关联生成哈希值。生成的哈希值基于许多输入,例如用户帐户 SID、ProgId、注册时间等,或许还有其他参数。
用户有时可能需要一种快捷方式来为其帐户设置文件关联,而无需每次都通过“[color=var(--accent)]打开方式”对话框或默认应用程序。一些用于更改浏览器或文件关联默认值的切换开关或快捷方式将有很大帮助。
幸运的是,我们有 SetUserFTA 工具来做到这一点。
(上次于 2021 年 5 月 21 日在 Windows 10 v21H1 上使用 SetUserFTA 版本 1.7.1 进行测试。工作完美。)
通过命令行设置默认应用程序、浏览器或关联
要通过命令行设置文件关联和默认浏览器,请使用Christoph Kolbicz 编写的[color=var(--accent)]SetUserFTA实用程序。Kolbicz 有效地对哈希算法进行了逆向工程。该实用程序会自动生成哈希值并为您设置默认值。
要使用命令行更改默认浏览器,请使用以下语法:
SetUserFTA.exe 扩展 progid
它还支持 URL 协议(例如http,https、mailto、 等)
谷歌浏览器
要将 Chrome 设置为默认浏览器,请运行以下命令:
SetUserFTA http ChromeHTMLSetUserFTA https ChromeHTMLSetUserFTA .htm ChromeHTMLSetUserFTA .html ChromeHTML火狐浏览器SetUserFTA http FirefoxHTMLSetUserFTA https FirefoxHTMLSetUserFTA .htm FirefoxHTMLSetUserFTA .html FirefoxHTML歌剧SetUserFTA http OperaStableSetUserFTA htts OperaStableSetUserFTA .htm OperaStableSetUserFTA .html OperaStable微软边缘(铬)SetUserFTA http MSEdgeHTMSetUserFTA https MSEdgeHTMSetUserFTA 微软边缘 MSEdgeHTMSetUserFTA .htm MSEdgeHTMSetUserFTA .html MSEdgeHTMMicrosoft Edge(旧版)SetUserFTA http AppXq0fevzme2pys62n3e0fbqa7peapykr8vSetUserFTA https AppX90nv6nhay5n6a98fnetv7tpk64pp35esSetUserFTA 微软边缘 AppX7rm9drdg8sk7vqndwj3sdjw11x96jc0ySetUserFTA .htm AppX4hxtad77fbk3jkkeerkrm0ze94wjf3s9SetUserFTA .html AppX4hxtad77fbk3jkkeerkrm0ze94wjf3s9
相关:有关文件扩展名 → ProgID 映射的更多信息,请参阅[color=var(--accent)]如何使用注册表编辑器删除文件类型关联一文。

默认图像查看器
要将 Windows 照片查看器设置为 .png 和 .jpg 文件的默认处理程序,请运行:
SetUserFTA .jpg PhotoViewer.FileAssoc.JpegSetUserFTA .png PhotoViewer.FileAssoc.Png
[color=var(--accent)]请注意,您将按照在 Windows 10 中恢复丢失的 Windows照片查看器一文中应用 Windows 照片查看器注册表编辑,以使上述命令正常工作。如果没有必要的 ProgId 注册,您的文件将显示为未知文件类型。
要恢复为默认的Microsoft 照片,请使用以下命令行:
SetUserFTA .jpg AppX43hnxtbyyps62jhe9sqpdzxn1790zetc设置用户FTA .png AppX43hnxtbyyps62jhe9sqpdzxn1790zetcProgID 与“Applications\program.exe”
如果应用程序没有定义文件类或 Progid,您也可以提及该程序的 exe,就像Applications\program.exe类型一样。如果程序是在HKCR\Applications注册表项下注册的,则此方法有效。
例如,要将 Notepad++ 设置为 .txt 文件的默认编辑器,请运行:
SetUserFTA .txt 应用程序\notepad++.exe
要恢复为默认值 ( notepad.exe),请使用:
SetUserFTA .txt txt文件或者SetUserFTA .txt 应用程序\notepad.exe
您可以为所需命令创建桌面快捷方式,只需单击一下即可快速切换默认值!
查看所有文件类型的当前用户默认值
要获取所有文件类型和 URL 协议的用户默认值,请运行以下命令:
SetUserFTA 获取
SetUserFTA 使设置文件关联的工作变得简单!Danysys.com 有一个类似的实用程序,但我尚未测试过。如果您想查看它,请访问[color=var(--accent)]设置文件类型关联默认应用程序命令行 Windows 10 UserChoice 哈希内部方法



作者: nttwqz    时间: 2023-8-21 14:59
哇,楼主竟然找到了这样的好东西,有空了试试
作者: wjgyz740526    时间: 2023-8-21 15:36
看起来功能非常强大
作者: hlowld    时间: 2023-8-21 15:40
最新版Win10和Win11中,通过修改注册表来关联文件类型的方法已失效,详情可参考www。cnblogs.com/h2zZhou/p/6654424.html
常见的解决方案是楼主提到的SetUserFTA和SFTA(github.com/DanysysTeam/SFTA)

我两个都试用过,最终保留了SFTA,能完美解决我的所有问题:用脚本静默执行关联常用文件格式,并设置Centbrowser为默认浏览器。
脚本如下:

::文件关联和协议关联
set "exe=%~dp0chrome.exe"
set "pid=CentHTM"
%~dp0SFTA.exe --reg "%exe%" ".htm"   "%pid%"  
%~dp0SFTA.exe --reg "%exe%" ".html"  "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "http"   "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "https"  "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "ftp"    "%pid%"

::导入默认浏览器所需的注册表
regedit /s "%~dp0#)chrome.reg"



#)chrome.reg内容如下
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CentHTM]
@="Cent HTML Document"
"AppUserModelId"="CentBrowser"
[HKEY_CLASSES_ROOT\CentHTM\Application]
"AppUserModelId"="CentBrowser"
"ApplicationIcon"="C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe,0"
"ApplicationName"="Cent Browser"
"ApplicationDescription"="访问互联网"
"ApplicationCompany"="Cent Studio"
[HKEY_CLASSES_ROOT\CentHTM\DefaultIcon]
@="C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe,0"
[HKEY_CLASSES_ROOT\CentHTM\shell\open\command]
@="\"C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe\" --single-argument %1"


[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet]
@="CentBrowser"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser]
@="Cent Browser"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\Capabilities]
"ApplicationDescription"="Cent Browser 是一款可高速运行网页和应用的网络浏览器。它快捷、稳定且易于使用。Cent Browser 内置的防护恶意软件和网上诱骗的功能可让您更安全地浏览网页。"
"ApplicationIcon"="C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe,0"
"ApplicationName"="Cent Browser"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\Capabilities\FileAssociations]
".htm"="CentHTM"
".html"="CentHTM"
".pdf"="CentHTM"
".shtml"="CentHTM"
".svg"="CentHTM"
".xht"="CentHTM"
".xhtml"="CentHTM"
".webp"="CentHTM"
".shtm"="CentHTM"
".mht"="CentHTM"
".mhtm"="CentHTM"
".mhtml"="CentHTM"
".xml"="CentHTM"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\Capabilities\Startmenu]
"StartMenuInternet"="CentBrowser"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\Capabilities\URLAssociations]
"http"="CentHTM"
"https"="CentHTM"
"irc"="CentHTM"
"mailto"="CentHTM"
"mms"="CentHTM"
"news"="CentHTM"
"nntp"="CentHTM"
"sms"="CentHTM"
"smsto"="CentHTM"
"snews"="CentHTM"
"tel"="CentHTM"
"urn"="CentHTM"
"webcal"="CentHTM"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\DefaultIcon]
@="C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe,0"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\InstallInfo]
"ReinstallCommand"="\"C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe\" --make-default-browser"
"HideIconsCommand"="\"C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe\" --hide-icons"
"ShowIconsCommand"="\"C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe\" --show-icons"
"IconsVisible"=dword:00000001
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\CentBrowser\shell\open\command]
@="\"C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe\""


[HKEY_CURRENT_USER\Software\RegisteredApplications]
"CentBrowser"="Software\\Clients\\StartMenuInternet\\CentBrowser\\Capabilities"


[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe]
@="C:\\Windows\\Temp\\app\\centbrowser\\chrome.exe"
"Path"="C:\\Windows\\Temp\\app\\centbrowser"
作者: hlowld    时间: 2023-8-21 15:44
补充一下,最好修改注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer]
"NoNewAppAlert"=dword:00000001
否则,可能会弹出 让选择应用的框
作者: yyz2191958    时间: 2023-8-21 18:18
进来学习
作者: 9zhmke    时间: 2023-8-21 18:30
hlowld 发表于 2023-8-21 15:40
最新版Win10和Win11中,通过修改注册表来关联文件类型的方法已失效,详情可参考www。cnblogs.com/h2zZhou/p ...

https://github.com/DanysysTeam/SFTA/ 居然没找到下载的,百度不出来,必应下载了一个SFTA:
https://danysys.com/set-file-typ ... sh-internal-method/
作者: 9zhmke    时间: 2023-8-21 21:53
本帖最后由 9zhmke 于 2023-8-21 21:54 编辑

重写了个图片关联,果然成功了:
  1. @echo off
  2. pushd "%~dp0"
  3. setlocal enabledelayedexpansion
  4. del tmp.reg >nul 2>nul
  5. set p=%cd:\=\\%
  6. set "exe=xnviewmp.exe"
  7. set "pid=XnViewMP"

  8. :Copy configuration
  9. md "%APPDATA%\%pid%"
  10. copy /y xnview.ini "%APPDATA%\%pid%"

  11. for %%i in (raw,crw,cr2,raf,dcr,mrw,nef,orf,pef,srf,x3f,iff,sgi,xbm,xpm,emf,pcx,tga,png,bmp,jpg,jpeg,gif,ico,psd,tif,tiff,ais,ani,cur,emf,eps,lwf,webp,wmf,heic) do SFTA.exe --reg "%cd%\%exe%" ".%%i" "%pid%"
复制代码


作者: hlowld    时间: 2023-8-21 22:13
话说看图软件可以试试jpegview,我试过绝大多数同类,它是最合我意的
作者: 15126222223    时间: 2023-8-21 22:46
9zhmke 发表于 2023-8-21 21:53
重写了个图片关联,果然成功了:

http://bbs.wuyou.net/forum.php?m ... d=436205&extra=

9zhmke 大大,能帮我关联一下这个应用吗?我没有看懂你们写的。
作者: 9zhmke    时间: 2023-8-21 23:49
本帖最后由 9zhmke 于 2023-8-22 00:20 编辑
15126222223 发表于 2023-8-21 22:46
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=436205&extra=

9zhmke 大大,能帮我关联一下这个 ...

没试你那个软件,你可以参照这个PDF关联的写法:
SFTA.exe --reg "%cd%\PDFXEdit.exe" ".pdf" "PDF-XChangeViewer"
把上面这段加到你之前的绿化批处理末尾就可以了,记着把软件名和软件识别名改成你的,把SFTA.exe放在同一目录下面。比如,用稻壳阅读器时,程序名是DocBox.exe,软件识别名是DocBox,就可以在末尾添加:
  1. set "exe=DocBox.exe"
  2. set "pid=DocBox"
  3. for %%i in (caj,pdf,chm,xdf,epub,mobi,azw,azw3,ofd,xps,md,djvu,cbz,cb7,cbr,umd,pdb,palm) do SFTA.exe --reg "%cd%\%exe%" ".%%i" "%pid%"
复制代码
又比如说Mplayer,可以用以下代码:
  1. set movies=3gp,3gp2,asf,avi,avs,divx,evo,flv,m1v,m2v,m4b,m4p,m4v,mkva,mp4a,rmvba,mkv,mov,mp4,mpeg,mpg,ogm,pmp,pss,pva,tpr,qt,rm,rmvb,tp,ts,vob,vp6,wmv,webm,pls
  2. cd /d "%~dp0%"
  3. set "exe=PotPlayerMini64.exe"
  4. set "pid=PotPlayer"
  5. for %%i in (%movies%) do SFTA.exe --reg "%cd%\%exe%" ".%%i" "%pid%"
复制代码




作者: megatron    时间: 2023-8-22 08:04
之前手动设置确实太麻烦了
作者: wjgyz740526    时间: 2023-8-22 08:49
搜了下,贴上来
SFTA-1.3.1.zip (90.88 KB, 下载次数: 132)



d:\我的文档\桌面\SFTA-1.3.1>sfta /?
Invalid Parameter
##################################
##   __                         ##
##   |  \  _   _      _     _   ##
##   |__/ (_| | ) \/ _) \/ _)   ##
##                /     /       ##
##     © 2020 Danysys.com       ##
##        SFTA v.1.3.1          ##
##################################

OPTIONS:

-h, --help        Show Help
-l, --list        Show All Application Program Id
-g, --get         Show Default Application Program Id for an Extension
      Parameters: [.Extension]
-r, --reg         Register Application Program Id for an Extension and Set File Type Associa
      Parameters: [ApplicationFullPath] [.Extension] [ProgramId-Optional]
-u, --unreg       Unregister Application Program Id
      Parameters: [ApplicationFullPath|Program Id] [.Extension]
-i, --icon       Set Application Association Icon
      Parameters: [Icon Path]
-d, --debug       Show Debug Information

Usage:

   Get Current Application Program Id
   SFTA.exe --get ".txt"

   Set File Type Association
   SFTA.exe "My.Program.Id" ".txt"
   SFTA.exe "My.Program.Id" ".txt" -i "shell32.dll,100"

   Set Protocol Association
   SFTA.exe "My.Program.Id" "http"

   Register Application + Set File Type Association
   SFTA.exe --reg "C:\SumatraPDF.exe" ".PDF"
   SFTA.exe --reg "C:\SumatraPDF.exe" ".PDF" "CustomProgramId"

   Register Application + Set Protocol Association
   SFTA.exe --reg "C:\SumatraPDF.exe" "http"

   Unregister Application
   SFTA.exe --unreg "C:\SumatraPDF.exe" ".PDF"
   SFTA.exe --unreg "CustomProgramId" ".PDF"





































































作者: ppll2030    时间: 2023-8-22 11:52
果然是好宝贝啊。老软件关联又可以一气呵成了。
作者: 15126222223    时间: 2023-8-23 12:08
9zhmke 发表于 2023-8-21 23:49
没试你那个软件,你可以参照这个PDF关联的写法:
SFTA.exe --reg "%cd%\PDFXEdit.exe" ".pdf" "PDF-XCha ...

非常感谢大大,我去试一下。
作者: wjgyz740526    时间: 2023-8-23 17:30
本帖最后由 wjgyz740526 于 2023-8-23 17:37 编辑

win11试了下,360极速浏览器,文件关联全部成功,但默认浏览器还是不正确,不知道是哪儿的注册表没打上
作者: 9zhmke    时间: 2023-8-23 22:35
wjgyz740526 发表于 2023-8-23 17:30
win11试了下,360极速浏览器,文件关联全部成功,但默认浏览器还是不正确,不知道是哪儿的注册表没打上

浏览器估计你要按四楼的方法修改
作者: wjgyz740526    时间: 2023-8-23 22:44
9zhmke 发表于 2023-8-23 22:35
浏览器估计你要按四楼的方法修改

是的,主要是手头没有360极速浏览器设置为默认浏览器的注册表,明天虚拟机装个win7导出来试试
作者: sulong    时间: 2023-8-24 02:18
各有妙招学习了,多谢各位
作者: promrhxq    时间: 2023-9-12 23:35
感谢分享好东东
作者: liker    时间: 2023-9-13 00:41
丁丁,备案一下。
作者: 2010hook    时间: 2023-9-13 07:41
hlowld 发表于 2023-8-21 22:13
话说看图软件可以试试jpegview,我试过绝大多数同类,它是最合我意的

CPix 最好了,如果只是看图,又快又轻便,单文件。
http://www.filefriend.net/index_cn.html
作者: nttwqz    时间: 2023-9-13 17:41
经测试,10系统确实可以更改为文件关联,以后就方便多了
作者: wjgyz740526    时间: 2023-9-13 19:22
nttwqz 发表于 2023-9-13 17:41
经测试,10系统确实可以更改为文件关联,以后就方便多了

你试试浏览器能不能设置成默认浏览器
作者: dayeye    时间: 2023-9-13 19:35
路过,很好!
作者: nttwqz    时间: 2023-9-13 19:37
wjgyz740526 发表于 2023-9-13 19:22
你试试浏览器能不能设置成默认浏览器

我测试的edge可以
作者: 479135884    时间: 2023-9-24 21:10

路过,很好!
作者: nbhai2018    时间: 2023-10-31 13:22
非常有用,找了很久,感谢大大。。
作者: freesoft00    时间: 2023-12-18 08:26
nttwqz 发表于 2023-9-13 19:37
我测试的edge可以

::文件关联和协议关联
set "exe=%msedge.exe"
set "pid=msedge"
%~dp0SFTA.exe --reg "%exe%" ".htm"   "%pid%"  
%~dp0SFTA.exe --reg "%exe%" ".html"  "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "http"   "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "https"  "%pid%"  
%~dp0SFTA.exe --reg "%exe%" "ftp"    "%pid%"
edge设置为默认浏览器就这样就可以了?
作者: linshi456    时间: 2023-12-18 11:56
看样子能用,先收藏,过几天试试。
作者: nttwqz    时间: 2023-12-24 08:49
freesoft00 发表于 2023-12-18 08:26
::文件关联和协议关联
set "exe=%msedge.exe"
set "pid=msedge"
  1. :: 设置Edge为默认浏览器
  2. for %%a in (.htm .html .mht .mhtml .svg http https microsoft-edge microsoft-edge-holographic ms-xbl-3d8b930f read) do sfta.exe "MSEdgeHTM" "%%a"
  3. :: Internet Explorer
  4. sfta.exe "IE.AssocFile.URL" ".url"
  5. sfta.exe "IE.AssocFile.WEBSITE" ".website"
复制代码



一直找不到,刚找到之前研究的这段代码。
可以参考:dism /online /Export-DefaultAppAssociations
作者: tilltotell007    时间: 2024-2-7 21:44
正好遇到这样的问题,在这总算找到方法了。
作者: tilltotell007    时间: 2024-2-8 07:41
用了下setuserfta,也挺好用的
作者: aichong168    时间: 2024-2-8 15:22
dism /online /Export-DefaultAppAssociations 和 dism /online /Import-DefaultAppAssociations 也可以试试
作者: a2932798    时间: 2024-2-11 15:54
没积分,下载不了。。。。。。。
作者: tilltotell007    时间: 2024-2-11 16:45
也可以自己下源码编译sfta
作者: a2932798    时间: 2024-2-11 17:15
功能非常强大
作者: tilltotell007    时间: 2024-2-15 03:07
这个很有用
作者: ymwoo    时间: 2024-3-26 09:16
这个要学习试用一下。
作者: tataa    时间: 2024-4-15 11:17
9zhmke 发表于 2023-8-21 18:30
https://github.com/DanysysTeam/SFTA/ 居然没找到下载的,百度不出来,必应下载了一个SFTA:
https://d ...

网址打不开,好奇怪啊,bing也搜不到
作者: zyy    时间: 2024-5-5 22:32
谢谢分享,学习中
作者: atfeel    时间: 2024-5-27 10:19
样子能用,先收藏,过几天试试。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3