当程序移动时,如何更改默认程序(又名文件关联)?

当程序移动时,如何更改默认程序(又名文件关联)?

在 Windows 7 中,如果我已经将某个程序(例如Notepad2.exe)与某个文件类型关联,则.txt移动路径Notepad2.exe(例如移动文件夹)会破坏该关联。我遇到的问题是,我没有找到修复该关联的方法。

选择文件类型关联的常规方法(通过右键单击 > 属性或通过控制面板)不起作用。当您到达“选择要用于打开此文件的程序”窗口时,您可以尝试浏览所需的程序.exe,但在将其指向新路径后,当您返回到“选择要用于打开此文件的程序:”窗口时,该程序Notepad2.exe实际上不会出现在那里。

如果您将其重命名Notepad2.exe为其他名称,例如,Notepad2a.exe那么您可以将其关联为正常名称。因此,问题显然在于 Windows 假定名称标识了.exe程序。由于它显然记住了旧路径,因此Notepad2.exe可以将此行为解释为默默抱怨它不想记住两个Notepad2.exe具有不同路径的 s。

使用注册表我尝试删除剩余的关联Notepad2.exe(例如,使用此答案https://superuser.com/a/49617/223560)。我还调整了 MRU 列表的注册表项以删除对它的提及。但这还不足以让 Windows“忘记”它。由于这是一个便携式应用程序,因此没有卸载程序可以帮助 Windows 忘记它。

有办法解决这个问题吗?更改名称Notepad2.exe或创建具有不同名称的第二个副本/快捷方式对我来说不是一个可接受的解决方案。我想让它像正常情况下一样工作。

编辑:
在注册表中四处查看会得到一些线索。下面的注册表项OpenWithList包含具有类似值的项Notepad2.exe--- ,只有名称,没有路径。下面的注册表中UserChoice有一个Progid具有值的项Applications\Notepad2.exe。这看起来不像是路径,我不确定 Windows 如何确定它对应的路径。

答案1

我好像找到了:

HKEY_CLASSES_ROOT\Applications\Notepad2.exe\shell\open\command

将此键编辑为新路径。

答案2

我将使用注册表来修复此问题。

我们首先找到相关的文件类型

HKEY_CLASSES_ROOT\.txt

查看此密钥,您将发现它与另一密钥相关联

HKEY_CLASSES_ROOT\txtfile

继续往下看,你会看到控制打开哪个程序的键

HKEY_CLASSES_ROOT\txtfile\shell\open\command

例子

相关内容