我使用的是 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 相关的相应注册表部分,您应该能够更改命令行以指向可执行文件的正确路径。