无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6499|回复: 45
打印 上一主题 下一主题

[讨论] 讨论用SetUserFTA命令行更改默认应用程序效果?

    [复制链接]
跳转到指定楼层
1#
发表于 2023-8-21 11:33:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 哈希内部方法


评分

参与人数 1无忧币 +5 收起 理由
ppll2030 + 5 很给力!

查看全部评分

来自 4#
发表于 2023-8-21 15:40:19 | 只看该作者
最新版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"

评分

参与人数 1无忧币 +5 收起 理由
9zhmke + 5 很给力!

查看全部评分

回复

使用道具 举报

来自 5#
发表于 2023-8-21 15:44:15 | 只看该作者
补充一下,最好修改注册表
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer]
"NoNewAppAlert"=dword:00000001
否则,可能会弹出 让选择应用的框

评分

参与人数 2无忧币 +10 收起 理由
nttwqz + 5 赞一个!
9zhmke + 5 很给力!

查看全部评分

回复

使用道具 举报

2#
发表于 2023-8-21 14:59:26 | 只看该作者
哇,楼主竟然找到了这样的好东西,有空了试试
回复

使用道具 举报

3#
发表于 2023-8-21 15:36:33 | 只看该作者
看起来功能非常强大
回复

使用道具 举报

6#
发表于 2023-8-21 18:18:18 | 只看该作者
进来学习
回复

使用道具 举报

7#
 楼主| 发表于 2023-8-21 18:30:45 | 只看该作者
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/
回复

使用道具 举报

8#
 楼主| 发表于 2023-8-21 21:53:08 | 只看该作者
本帖最后由 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%"
复制代码

回复

使用道具 举报

9#
发表于 2023-8-21 22:13:34 来自手机 | 只看该作者
话说看图软件可以试试jpegview,我试过绝大多数同类,它是最合我意的
回复

使用道具 举报

10#
发表于 2023-8-21 22:46:15 | 只看该作者
9zhmke 发表于 2023-8-21 21:53
重写了个图片关联,果然成功了:

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

9zhmke 大大,能帮我关联一下这个应用吗?我没有看懂你们写的。
回复

使用道具 举报

11#
 楼主| 发表于 2023-8-21 23:49:27 | 只看该作者
本帖最后由 9zhmke 于 2023-8-22 00:20 编辑

没试你那个软件,你可以参照这个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%"
复制代码



点评

7z压缩怎么用SFTA.exe来写关联命令  详情 回复 发表于 2024-10-21 10:47
非常感谢大大,我去试一下。  详情 回复 发表于 2023-8-23 12:08
回复

使用道具 举报

12#
发表于 2023-8-22 08:04:46 | 只看该作者
之前手动设置确实太麻烦了
回复

使用道具 举报

13#
发表于 2023-8-22 08:49:03 | 只看该作者
搜了下,贴上来
SFTA-1.3.1.zip (90.88 KB, 下载次数: 142)



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"




































































评分

参与人数 1无忧币 +5 收起 理由
9zhmke + 5 用心探讨

查看全部评分

回复

使用道具 举报

14#
发表于 2023-8-22 11:52:48 | 只看该作者
果然是好宝贝啊。老软件关联又可以一气呵成了。
回复

使用道具 举报

15#
发表于 2023-8-23 12:08:27 | 只看该作者
9zhmke 发表于 2023-8-21 23:49
没试你那个软件,你可以参照这个PDF关联的写法:
SFTA.exe --reg "%cd%\PDFXEdit.exe" ".pdf" "PDF-XCha ...

非常感谢大大,我去试一下。
回复

使用道具 举报

16#
发表于 2023-8-23 17:30:39 | 只看该作者
本帖最后由 wjgyz740526 于 2023-8-23 17:37 编辑

win11试了下,360极速浏览器,文件关联全部成功,但默认浏览器还是不正确,不知道是哪儿的注册表没打上
回复

使用道具 举报

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

浏览器估计你要按四楼的方法修改
回复

使用道具 举报

18#
发表于 2023-8-23 22:44:34 来自手机 | 只看该作者
9zhmke 发表于 2023-8-23 22:35
浏览器估计你要按四楼的方法修改

是的,主要是手头没有360极速浏览器设置为默认浏览器的注册表,明天虚拟机装个win7导出来试试
回复

使用道具 举报

19#
发表于 2023-8-24 02:18:17 | 只看该作者
各有妙招学习了,多谢各位
回复

使用道具 举报

20#
发表于 2023-9-12 23:35:16 | 只看该作者
感谢分享好东东
回复

使用道具 举报

21#
发表于 2023-9-13 00:41:48 | 只看该作者
丁丁,备案一下。
回复

使用道具 举报

22#
发表于 2023-9-13 07:41:24 | 只看该作者
hlowld 发表于 2023-8-21 22:13
话说看图软件可以试试jpegview,我试过绝大多数同类,它是最合我意的

CPix 最好了,如果只是看图,又快又轻便,单文件。
http://www.filefriend.net/index_cn.html
回复

使用道具 举报

23#
发表于 2023-9-13 17:41:09 来自手机 | 只看该作者
经测试,10系统确实可以更改为文件关联,以后就方便多了
回复

使用道具 举报

24#
发表于 2023-9-13 19:22:15 来自手机 | 只看该作者
nttwqz 发表于 2023-9-13 17:41
经测试,10系统确实可以更改为文件关联,以后就方便多了

你试试浏览器能不能设置成默认浏览器
回复

使用道具 举报

25#
发表于 2023-9-13 19:35:28 | 只看该作者
路过,很好!
回复

使用道具 举报

26#
发表于 2023-9-13 19:37:16 来自手机 | 只看该作者
wjgyz740526 发表于 2023-9-13 19:22
你试试浏览器能不能设置成默认浏览器

我测试的edge可以
回复

使用道具 举报

27#
发表于 2023-9-24 21:10:40 | 只看该作者

路过,很好!
回复

使用道具 举报

28#
发表于 2023-10-31 13:22:27 | 只看该作者
非常有用,找了很久,感谢大大。。
回复

使用道具 举报

29#
发表于 2023-12-18 08:26:41 | 只看该作者
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设置为默认浏览器就这样就可以了?
回复

使用道具 举报

30#
发表于 2023-12-18 11:56:01 来自手机 | 只看该作者
看样子能用,先收藏,过几天试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-24 06:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表