创建 URI 方案处理程序关联

创建 URI 方案处理程序关联

我是创建自定义 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 文件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 时设置命令提示符的默认位置(在这种情况下,无需导航到其他位置,命令应该可以正常工作)。

答案1

您的.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\""

如果这仍然不起作用,请仔细检查 java 是否在您的 PATH 中。如果是,并且它仍然不起作用,尝试用 Java exe 的完整路径替换“java”。

答案2

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

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

以下单行自动热键脚本(可以编译为独立.exe文件)启动程序(或.jar文件或其他)。工作目录将设置为脚本.exe位置。

Run, hello.jar, %A_ScriptDir%

我还没有用文件实际测试过.jar,因为我现在没有安装 JDK。不过我尝试过使用未编译的 AutoHotkey 脚本。有关该Run命令的文档可用这里

相关内容