Mik*_*ike 7 windows-registry icons windows-explorer file-extension windows-10
目标是让 .jpg、.png、.tif 和 .raw 文件始终使用 Photoshop CC 2015 打开并使用相应的图标。
您可以参考下面的流程图,了解 Windows 10 如何为文件选择图标。我通过在注册表中进行更改并观察结果来提出这一点。
UserChoice
键值定义ProgId
的文件类型覆盖扩展键定义的文件类型。UserChoice
键ProgId
的值设置为Application/Photoshop.exe
设置Photoshop中为常开,以应用为.JPG和.PNG时。UserChoice
键值ProgId
UserChoice
.jpg 和 .png 等受保护扩展名的密钥UserChoice
扩展级别上的键定义的文件类型?UserChoice
键值是什么ProgId
,为什么 .tif 导致Photoshop.TIFFFile.90
而 .png 和 .jpg 导致Application/Photoshop.exe
.UserChoice
?UserChoice
密钥哈希?Photoshop.JPEGFile.90
使用 GUI将文件类型指定为始终打开的应用程序?UserChoice
密钥?直到 explorer.exe 重新启动/刷新后,注册表更改才会生效。您可以使用任务管理器杀死并重新启动 explorer.exe,或者您可以使用DesktopRefresh.exe。
该UserChoice
键可在两个地方存在:
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\FileExts\.jpg\UserChoice
如果一个不存在,则使用另一个。因此,如果要进行更改,请确保删除/修改它们。
HKCR\.jpg
HKCR\Photoshop.JPEGFile.90
UserChoice
钥匙: HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
首次安装 Photoshop 时,它关联了所有文件扩展名,一切都很棒。在某个时候,我决定始终使用照片应用程序打开 .png、.jpg、.tif 和 .raw 文件。所以我:右键单击 .png/.jpg/.tif/.raw 文件 -> 打开方式 -> 选择另一个应用程序 -> 选择照片 -> 选中“始终使用此应用程序打开 .png 文件”。现在我想回到用 Photoshop 打开。我和以前一样,选择 Photoshop 作为始终使用的应用程序。现在可以使用 Photoshop 打开 .jpg、.png、.tif 和 .raw 文件。但是,.tif 文件显示正确的图标,而 .jpg、.png 和 .raw 显示 Photoshop.exe 图标。
我尝试重新安装 Photoshop,但这没有帮助。我尝试使用 Adobe Bridge 重置文件关联,但这也无济于事。文件类型管理器和默认程序编辑器等工具不起作用(我将在下面解释原因)。
然后我开始研究 Windows 10 如何为给定文件选择显示哪个图标。我学会了:
就我而言,.jpg、.png、.tif、.raw 将 Photoshop 设置为始终打开的应用程序。这通过注册表反映在
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tif\UserChoice
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.raw\UserChoice
键。这就是 .tif 和 .jpg/.png/.raw 之间的区别所在。.tif 的ProgId
值是Photoshop.TIFFFile.90
.jpg、.png 和 .raw的值Applications\Photoshop.exe
。这意味着 .tif 与Photoshop.TIFFFile.90
文件类型正确关联,但 .jpg .png 和 .raw 与文件类型关联Applications\Photoshop.exe
。
我不能简单地更改Applications\Photoshop.exe
文件类型的图标,因为 .jpg、.png 和 .raw 都使用该文件类型。因此,3 个扩展使用相同的图标。我无法为每个扩展指定唯一的图标。这就是文件类型管理器和默认程序编辑器工具不起作用的原因。在这种情况下,他们为文件类型设置了 DefaultIcon。
解决办法似乎很简单:改变ProgId
在价值UserChoice
键使用Photoshop.JPEGFile.90
,Photoshop.PNGFile.90
以及Photoshop.RAWFile.90
文件类型。这在 Windows 10 中不再可能。新的安全措施添加了密钥中Hash
伴随ProgId
值的值UserChoice
。只有 Windows 知道如何生成这个哈希。如果该值的哈希值不正确ProgId
,Windows 将重置/删除该UserChoice
密钥。这使得该值只能通过 Windows GUI 设置。这个想法是为了防止病毒/攻击者能够以编程方式更改始终打开的应用程序的扩展。
我不知道为什么选择 Photoshop 作为始终打开的应用程序会导致正确ProgId
设置为 .tif 而不是 .jpg、.png 和 .raw,但似乎无法修复。在这一点上,我开始查看其他我没有接触过的扩展名,比如 .tga。我从未为 .tga 设置始终打开的应用程序,因此它没有UserChoice
密钥。相反,.tga 的扩展键定义了关联类型,如下所示:
[HKCR\.tga]
@="Photoshop.TGAFile.90"
Run Code Online (Sandbox Code Playgroud)
另一个看似简单的解决方案:通过删除UserChoice
密钥并在扩展密钥上定义文件类型来取消设置始终打开的应用程序。这适用于 .raw,但不适用于 .jpg 和 .png。当我删除UserChoice
.jpg 和 .png的键时,我收到了一条带有此错误的 Windows 通知:
应用默认值已重置
应用程序导致 .jpg 文件的默认应用程序设置出现问题,因此已将其重置为“照片”
我刷新了注册表,果然,UserChoice
密钥又回来了。事实证明,Windows 会保护一些扩展名(如 .jpg 和 .png),并且不允许您删除UserChoice
密钥。
所以我们不能删除UserChoice
密钥,我们不能更新UserChoice.ProgId
到正确的值,我们不能覆盖指定的文件类型UserChoice.ProgId
……现在怎么办?
我找到了一个 hacky 解决方法,但我仍然想得到上面问题的答案,这样我们就可以找到一个合适的/不那么 hacky 的解决方案。
\n\n下面是对初学者友好的分步操作。
\n\n创建一个虚拟 .cmd 文件,并将其设置为使用 GUI 的扩展的始终打开应用程序。这会导致 Windows 为虚拟 .cmd“app”创建新文件类型,并通过设置键值(例如: )将其与扩展名UserChoice
关联ProdId
起来Application/customJPEG.cmd
。使用唯一命名的虚拟 .cmd 文件对每个扩展重复此过程,然后,bam,我们就有了与每个扩展关联的唯一文件类型(例如:Application/customJPEG.cmd
、Application/customPNG.cmd
等)。然后,我们可以为每种新文件类型独立定制图标和打开/编辑命令。
有关 Windows 如何选择文件图标的更多信息,请参阅原始问题中的流程图。
\n\n注意:只有 .jpg 和 .png 等受保护的扩展名才需要此解决方法。请参阅我上面的问题,了解不受保护的扩展的解决方案。但是,无论如何,此解决方法应该适用于任何扩展。
\n\n快速词汇:
\n\n注意:图像文件扩展名(例如 .jpg 和 .png)显示图像的缩略图。要查看该图标,请创建一个空文件(因此无法生成缩略图)或打开资源管理器窗口并将“视图”设置为“详细信息”。
\n\n注意:在刷新桌面之前,您不会看到任何更改。确保在更改注册表后执行此操作。详细信息请参见步骤 6。
\n\n注意:如果注册表中似乎缺少某个键,请尝试按 F5 或“查看”->“刷新”来刷新。regedit 不会保持最新状态,需要刷新才能看到最新版本。
\n\n对每个文件扩展名重复以下步骤。将 .jpg 替换为您的文件扩展名,并将 Photoshop 替换为您想要的任何应用程序。
\n\ncustomJEPG.cmd
文件名的内容并保存无论您将其保存在何处或命名为什么,每个文件类型的名称都必须不同。虚拟 .cmd 的名称将决定文件类型的名称。我建议在名称中包含扩展名或文件类型,以便以后轻松区分。
\n\n如果您希望多个文件扩展名共享同一文件类型,请对每个扩展名重复上述步骤 1-7。
\n\nHKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.jpg\\UserChoice
ProgId
。这是现在与 .jpg 扩展名关联的文件类型文件类型应该是Applications\\{the name of your dummy .cmd}
. 例子:Applications\\customJPEG.cmd
。
HKEY_CLASSES_ROOT\\
Applications\\customJEPG.cmd
,您将打开:HKEY_CLASSES_ROOT\\Applications\\customJEPG.cmd
DefaultIcon
DefaultIcon
为您要使用的图标的路径。示例:E:\\Tools\\Adobe\\Adobe Photoshop CC 2015\\Photoshop.exe,30
shell\\open\\command
文件类型密钥内的密钥。示例:HKEY_CLASSES_ROOT\\Applications\\customJEPG.cmd\\shell\\open\\command
"E:\\Tools\\Adobe\\Adobe Photoshop CC 2015\\Photoshop.exe" "%1"
edit\\command
内创建该密钥。shell
示例:HKEY_CLASSES_ROOT\\Applications\\customJEPG.cmd\\shell\\edit\\command
open\\command
密钥具有相同的值。示例:"E:\\Tools\\Adobe\\Adobe Photoshop CC 2015\\Photoshop.exe" "%1"
在刷新桌面之前,您不会看到任何变化。有 3 种方法可以做到这一点:
\n\nie4uinit.exe -show
. 在 Windows 7 和 8 中运行ie4uinit.exe -ClearIconCache
. (感谢@Tony的提示。)或者,您可以重新启动 explorer.exe:
\n\nexplorer.exe
explorer.exe
->结束任务,然后单击结束进程explorer.exe
并点击确定如果“您想如何打开此文件?” 窗口再次弹出,确保您的虚拟 .cmd 文件在顶部的“继续使用此应用程序”下仍处于选中状态,选中“始终使用此应用程序打开 .jpg 文件”,然后单击“确定”。
\n\n您可以删除虚拟 .cmd 文件。这是可选的。
\n\n通常,应用程序的 .exe 将包含多个图标。例如,Photoshop.exe 包含它支持的所有不同文件类型的所有图标。以下是查找和使用这些图标的方法:
\n\n(column - 1) * 4 + row - 1
。例如,如果图标位于第 3 行第 6 列,(6 - 1) * 4 + 3 - 1 = 22
C:\\Example\\Photoshop.exe,23
归档时间: |
|
查看次数: |
2579 次 |
最近记录: |