gpt4 book ai didi

Windows:更改与文件类型关联的应用程序的名称/图标

转载 作者:可可西里 更新时间:2023-11-01 13:41:06 28 4
gpt4 key购买 nike

我想将 Windows 中的文件类型与特定应用程序相关联,但我需要这样做,以便当用户打开“打开方式”菜单时,列表中应用程序的名称和图标是为此自定义的文件类型(即不仅仅是可执行文件的名称和图标)。

这是因为二进制文件是一个通用二进制文件,可以运行许多不同的应用程序,具体取决于其命令行参数(类似于python.exejavaws.exe) .我不希望“打开方式”菜单显示“Python”或“Java”,我希望它显示在命令行上传递的应用程序的名称和图标。

我知道如何添加文件关联(通过在 HKEY_CLASSES_ROOT 中创建一个 ProgID,并将 ProgID 名称添加到 OpenWithProgidsHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts ),但我找不到任何方法来更改应用程序的名称或图标,因为它出现在该类型文件的“打开方式”菜单中。这可能吗?

(编辑以阐明我对添加文件关联的现有理解。)

最佳答案

我有一个允许设置名称(但不是图标或公司名称)的部分解决方案。

有可能register an application在 Windows 中。这与创建 ProgID 非常相似, 但它允许您设置 FriendlyAppName。出于某种原因,您不能在 ProgID 上设置 FriendlyAppName。不幸的是,FriendlyAppName 不是字符串,而是对 .DLL 或 .EXE 文件中资源的引用。去图吧。

所以:

  • 为要与该文件相关联的虚拟应用程序创建一个虚拟 .dll 文件。它不必包含任何代码,只需资源。给它一个包含应用程序标题的字符串资源。
  • 创建一个 key HKEY_CLASSES_ROOT\Applications\whatever.exe(无论什么都应该是特定于虚拟应用程序的唯一名称 -- 它不需要是一个真正的可执行文件,但它确实需要以 .exe 或其他可执行扩展名结尾)。
    • 设置默认值,DefaultIconshell,如 Programmatic Identifiers 中所述.当默认关联时,这会设置文件类型的名称和图标,以及要运行的 shell 命令。
    • 同时给它一个引用虚拟 .dll 的 FriendlyAppName 值。例如,如果您的应用名称字符串是字符串编号 23,请将 FriendlyAppName 设置为“@PATH\TO\DLL.dll,-23”。
    • 添加一个 SupportedTypes 键并为虚拟应用程序可以处理的每种类型添加一个值。

现在该应用程序将出现在“选择默认程序”对话框的“其他程序”下拉列表中,但不会出现在“打开方式”菜单中。要正确关联它,您需要:

  • 转到注册表中文件扩展名的条目。这应该在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 中(它也可以在 HKEY_CURRENT_USER 中,但我发现 FileExts 版本覆盖,如果用户手动创建文件关联,Windows 会在那里创建一个,所以最好使用那个)。
    • OpenWithList 下,需要为您在上面创建的假whatever.exe 提供一个条目。这应该是一个名称为任意字母且值为假 exe 名称的值。
    • 同样在 OpenWithList 下,您需要确保 MRUList 值包含您在上一步中分配给假可执行文件的字母。
    • 不相信您需要将它添加到 OpenWithProgids(没有它也能工作),但文档告诉您这样做。
    • 要使其成为默认处理程序,请在 UserChoice 下,将 Progid 设置为“Applications\whatever.exe”。这是可选的,但需要在这里设置一些东西(如果缺少 UserChoice,则没有任何效果)。

最后,用 SHChangeNotify 命中它刷新 Windows 的图标和快捷方式缓存。 (毕竟我不确定这是否有必要;我只是注意到它有助于让 Windows 注意到您所做的更改。)

现在,在文件类型的“打开方式”菜单上,您应该会看到您放入虚拟 .dll 中的自定义字符串的条目。它仍将具有 shell 命令中提到的真实二进制文件的图标,但您至少可以控制名称。为什么,为什么这么难?

如果有更好的答案,我会暂时保留这个问题。

关于Windows:更改与文件类型关联的应用程序的名称/图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829736/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com