下面的ProgId和ApplicationName是从哪里来的?如何查询这些特定字段以生成自己的文件关联xml文件?
您可以通过运行
Dism.exe /online /Export-DefaultAppAssociations:C:\Temp\DefaultApps.xml
<Association Identifier=".html" ProgId="ChromeHtml" ApplicationName="Google Chrome" />
<Association Identifier=".ico" ProgId="PBrush" ApplicationName="Paint" />
<Association Identifier=".md" ProgId="Applications\notepad.exe" ApplicationName="Notepad" />例如,什么是"ChromeHtml"?我在哪里可以收回这个ProgId?
什么是"Applications\notepad.exe"?<--这不是我也可以导航的路径。notepad.exe不是在system32吗?
发布于 2017-10-04 19:02:43
在这种情况下,ProgId:
Shell使用编程标识符(ProgID)注册表子项将文件类型与应用程序关联,并控制关联的行为。用于文件关联的ProgID条目位于注册表中的HKEY_CLASSES_ROOT下面。
"ChromeHtml“是由Google开发人员创建的ProgID。当您选择Chrome作为默认浏览器时,.html文件注册将被更改(由Chrome或Windows根据您的Windows版本而定),以便它指向ChromeHtml ProgID。ProgID包含有关在双击文件时启动哪个应用程序的信息.
"PBrush“是微软创建的ProgID。
然而,"Applications\notepad.exe“并不是微软专门创建的ProgId,而是在一个没有真正ProgID的应用程序中使用"open”功能的结果。它不是文件路径,而是注册表中的HKEY_CLASSES_ROOT\Applications。
参与默认程序特性的应用程序是在HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications下注册的,这将引导您找到它们的功能键,其中列出了它们的类型以及ProgID。其他应用程序只有一个App路径注册,除了直接在HKEY_CLASSES_ROOT中注册文件扩展名和ProgID之外,有些应用程序没有在任何地方注册。
有些应用程序在注册时使用"ApplicationName“条目,但据我所知,这个值并没有文档化,您可能希望调用类似于AssocQueryString(ASSOCF_INIT_BYEXENAME, ASSOCSTR_FRIENDLYAPPNAME, ...)的内容。
https://stackoverflow.com/questions/46568347
复制相似问题