创建URI方案处理程序关联


2

我是创建自定义URI方案的新手,我正在尝试在Windows 7系统中使用URI方案启动可执行的jar文件。

为了从命令提示符下运行此jar文件,我使用以下命令:

java -jar demo.jar

编辑:

为了使用“自定义URI方案”启动同一.reg文件,我创建了一个具有以下条目的文件(从下面的文章中复制):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DemoStart]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\DemoStart\shell]

[HKEY_CLASSES_ROOT\DemoStart\shell\open]

[HKEY_CLASSES_ROOT\DemoStart\shell\open\command]
@="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\""

由于以下原因,此方法不起作用:

我正在尝试运行的名为jar的可执行jar文件demo.jar是第三方提供的jar文件,它对XML配置文件有很多依赖性,这些文件也位于包含jar文件的同一文件夹中。我没有权限更改jar文件中存在的任何代码。

使用命令提示符,"java.exe" -jar "demo.jar"仅当我导航到同时包含和的文件夹时,该命令才demo.jar有效dependent config xml files。但是,如果我尝试运行命令:"java.exe" -jar "C:\Users\John\Desktop\demo.jar"从命令提示符窗口的默认位置(在我的情况下为C:\Users\John),则该命令将不起作用,因为从属配置xml文件不可用。

因此,在执行jar文件之前,我还需要找出一种更改命令提示符默认位置的方法。

请建议是否可以C:\Users\John\Desktop在触发自定义URI时将命令提示符的默认位置设置为(在这种情况下,无需导航至其他位置,该命令应该可以正常工作)。


我创建了一个.txt文件,将文件扩展名更改为.reg,将您发布的代码放在下面,然后双击该.reg文件以创建注册表项。然后我在中验证了相同的内容regedit
user182944

Answers:


2

您的.reg文件看起来不正确。格式很奇怪。它看起来应该像这样:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DemoStart]
"URL Protocol"=""

[HKEY_CLASSES_ROOT\DemoStart\shell]

[HKEY_CLASSES_ROOT\DemoStart\shell\open]

[HKEY_CLASSES_ROOT\DemoStart\shell\open\command]
@="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\""

如果仍然无法解决问题,请再次检查PATH中是否包含java。如果是这样,并且仍然不起作用,请尝试使用Java exe的完整路径替换“ java”。


1
因为URL永远不会传递给程序,所以那也不行。"%1"应该出现在适当的位置。另外,请始终使用绝对路径,否则您只会自找麻烦。/ edit:是的,并且谨慎地指定一个名称(在@旁边URL Protocol)。
Daniel B

我不是这个意思。我指的是“好记的名字”。这是旁边 的默认条目URL Protocol。您可以在中的大多数条目中看到它HKCR。稍后我将发布自己的答案。
Daniel B

到目前为止,@ Izam +1提供了帮助。当我打开时command prompt,默认位置是C:\Users\John。如果我手动导航到C:\Users\John\Desktop命令提示符中的位置并运行命令,"java.exe" -jar "demo.jar"那么它将正常工作。但是,如果我没有导航到Desktop"java.exe" -jar "C:\Users\John\Desktop\demo.jar"从默认位置(即C:\Users\John)运行此命令,则该命令将不起作用,因为在桌面环境中,我还需要一些其他XML文件来运行jar文件。
user182944

好的,我做了一些与应用程序相关的更改,终于使此功能生效,因此接受了这个答案。
user182944 2014年

1

因此,据我了解,您的主要问题不是实际的文件关联,而是工作目录。不幸的是,从文件关联启动工作目录时不会受到影响。如果程序依赖于其可执行文件旁边的文件,那么如果它依赖于工作目录,则会被设计破坏。

幸运的是,编程不再仅仅是专家。;)

下面的单行AutoHotkey脚本(可以编译成独立.exe文件)启动程序(或.jar文件或类似文件)。工作目录将设置为脚本.exe位置。

Run, hello.jar, %A_ScriptDir%

我实际上尚未使用.jar文件对此进行测试,因为我现在尚未安装JDK。我确实尝试过使用未编译的AutoHotkey脚本。该Run命令的文档在此处提供


我按照以下步骤操作:创建一个.ahk文件,将条目添加到#z::Run, demp.jar, %A_ScriptDir%文件中,Run Script然后单击Windows Key + z以启动demo.jar,所有这些对我来说都很好。但是我不想让我的用户AutoHot Key手动单击,因此愿意将这一过程自动化为:当浏览器启动时,demo.jar会自动执行。请对此提出建议。
user182944

您必须将AHK脚本(或.exe)与协议关联,而不是java.exe
Daniel B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.