为什么我移动了 Windows 上打开文件的应用程序后,无法用双击打开文件?

为什么我移动了 Windows 上打开文件的应用程序后,无法用双击打开文件?

我使用的是 Windows Server 2003,但我猜想在 Windows XP 上也是一样的。

我将一些可移动应用程序(通常人们为 USB 记忆棒创建它们)移动到了 c:\bin\app1\app1.exe 等位置。旧位置是 c:\programs\app1\app1.exe

app1.exe 可以打开 *.ap1 类型的文件

当我单击鼠标右键时文件.ap1并选择打开用 ...打开用对话框出现。但在这种情况下,它并没有像我预期的那样工作。我可以使用“浏览”按钮选择 c:\bin\app1\app1.exe,但是:

  • app1.exe 不会出现在我刚刚在程序列表中选择它的对话框中,就像我在浏览对话框中单击“确定”后所习惯的那样。

  • 当我在“打开方式”对话框中单击“确定”时,app1.exe 不会打开它,在此之前分配的应用程序仍会打开它

可能是什么原因?

  • 我的帐户是管理员组的成员
  • 我刚刚更改了文件夹 c:\bin\app1\ 的权限,并确保“管理员”组拥有所有权限。我还手动将此权限继承到所有子文件夹和子文件。
  • 我还尝试将应用程序(包含整个文件夹)移动到“c:\program files\app1\app1.exe

答案1

这只是一种解决方法,所以如果有人找到更好的答案,我会很乐意接受它。

我通过在注册表中搜索“app1”删除了所有对 app1.exe 的旧引用。

注册表通过不同的名称(例如“应用程序一”)引用 app1,我搜索并删除了它们全部。

我重新启动了 Windows(不知道是否有必要)

重启后我就可以做我想做的事情了(使用 app1.exe)

仍然感觉像是一个肮脏的黑客。

答案2

Windows 注册表跟踪文件类型和用于处理它们的应用程序。总体概念是“文件关联“。

*.txt 文件类型将与一个或多个可以处理此文件类型的应用程序“关联”。对于每种文件类型,都有一系列可以对文件执行的操作,称为“动词”。例如:打开、打印、编辑。

举一个实际的例子,找到以下注册表项并检查其内容:

转到HKEY_CLASSES_ROOT\.txt并检查“(Standard)”或“”的值。在我的例子中,它显示 txtfile。现在转到HKEY_CLASSES_ROOT\txtfile并查看这里的内容。请注意,下面HKEY_CLASSES_ROOT\txtfile\shell定义了一堆“动词”或动作,其中一个是“打开”键。子键“命令”将指定在资源管理器中双击任何 *.txt 文件时要运行的命令行。在我的例子中,这是:

"%SystemRoot%\System32\NOTEPAD.EXE %1"

此命令行中的 %1 将扩展为您双击的文件的完整路径。因此,双击 *.txt 文件将以双击文件的完整路径作为命令行运行 Notepad.exe。

通过找到与 *.ap1 相关的相应注册表部分,您应该能够更改命令行以指向可执行文件的正确路径。

相关内容