【问题标题】:Windows 7 how to make explorer open a file with a vbs scriptWindows 7 如何让资源管理器使用 vbs 脚本打开文件
【发布时间】:2018-12-02 19:08:51
【问题描述】:

我在没有管理员权限的 Windows 7 上运行 openjdk

我通过资源管理器“打开方式”对话框选择 java 作为“打开”.jar 文件的程序。 要通过(双击)单击运行 .jar 文件,Windows 会执行类似

的操作

java(文件名).jar

然而,java需要参数-jar,即:

java -jar (文件名).jar

要进行此设置,用户需要管理员权限才能使用 assoc 和 ftype,

或按照以下答案中的说明实施寄存器编辑。

另一种解决方法是使用批处理文件,例如javastart.bat:

列出 javastart.jar

start java -jar %1

在浏览器“打开方式”对话之后,这有效。 单击 jar 文件将打开命令窗口,这将启动 java。

但是,当 java 运行时,命令窗口也打开了,这很丑。

编辑

必须调用javaw.exe,然后命令窗口将关闭:

start javaw.exe -jar %1

关闭命令窗口不需要以下脚本

编辑结束

为了解决这个问题,我启动了一个 vbs 脚本。

新列表 javastart.jar

start startjar.vbs %1

还有 startjar.vbs:

Set args = Wscript.Arguments
cmd = "java -jar " & chr(34) & args(0) & chr(34)
Set WshShell = CreateObject("WScript.Shell")
CreateObject("Wscript.Shell").Run cmd, 0, True

这行得通:现在我得到一个启动 vbs 的命令窗口的短暂闪烁,然后无窗口 vbs 脚本启动 java 和 jar 文件。

但是,当我直接用 startjar.vbs 打开 jar 文件时(右键单击 jar 文件,而不是通过对话框打开),jar 文件的名称不会作为参数传递给 vbs,而是windows 尝试直接运行 jar 文件(并给出错误:“.jar 文件不是有效的 win32 应用程序”)。

为什么 Windows 资源管理器不将文件名作为参数发送给 vbs 脚本?

【问题讨论】:

  • 要进行此设置,用户需要管理员权限... 不正确。 HKCR 下的设置来自HKCU\Software\ClassesHKLM\Software\Classes。您当然可以编辑 HKCU 设置,因为它们是您的。
  • 可能是真的,但应该编辑哪个设置?以下编辑(在“a”之后)似乎不起作用: [HKEY_USERS\....\Explorer\FileExts\.jar\OpenWithList] "a"="java.exe -jar" "MRUList"="bca" " b"="startjar.bat" "c"="startjar.vbs"

标签: java vbscript


【解决方案1】:

HKCR 下的设置来自 HKCU\Software\Classes 和 HKLM\Software\Classes。您当然可以编辑 HKCU 设置,因为它们是您的。如果它们存在,它们会覆盖完全相同的 HKLM 设置。在 HKCR 下,您将看到两者的合并视图,其中 CU 覆盖任何 LM 设置。

这始于记事本的设置。 修复 javaw.exe 文件的路径

jar 文件现在在 New 菜单上,由 windows 搜索搜索,被视为文本文件,因此在右键菜单上编辑但作为程序文件打开。

如果您是非管理员,请使用 reg 命令进行合并(修复路径后)。如果您是管理员,请双击它。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\jarfile]
@="Java Program File"

[HKEY_CURRENT_USER\SOFTWARE\Classes\jarfile\shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\jarfile\shell\open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\jarfile\shell\open\command]
@="C:\\Folder\\javaw.exe -jar \"%1\""

[HKEY_CURRENT_USER\SOFTWARE\Classes\.jar]
@="jarfile"
"Content Type"="text/plain"
"PerceivedType"="text"

[HKEY_CURRENT_USER\SOFTWARE\Classes\.jar\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\.jar\ShellNew]
"ItemName"=hex(2):6a,00,61,00,72,00,66,00,69,00,6c,00,65,00,00,00
"NullFile"=""

【讨论】:

  • 是的,此解决方法使用命令 java -jar 打开 jar 文件。但是, [HKEY_CURRENT_USER\SOFTWARE\Classes\jarfile\shell\open\command] @="C:\\Folder\\java -jar \"%1\"" 似乎打开了“丑陋”命令(shell)窗口还有……
  • 我不使用 Java 但不是非控制台版本的 Java 和控制台版本的 Javac。
  • javac是java编译器(java是虚拟机,编译后的java文件可以在其中运行)
  • 有两种类型的程序。图形(windows 不会自动给他们一个控制台,但他们可以自己创建一个)和控制台(windows 用控制台启动程序)。我从未见过Java。所以我不知道它的exe是什么。我发布的任何内容都没有强制创建控制台。这完全取决于 Java.exe 标头中的标志它的行为方式。
  • 如果您要使用控制台,请确保没有java.bat 挂在附近。
猜你喜欢
  • 2016-02-22
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多