【问题标题】:Running Windows commandline from Java as an Administrator - Creating a .manifest file以管理员身份从 Java 运行 Windows 命令行 - 创建 .manifest 文件
【发布时间】:2012-03-02 20:35:15
【问题描述】:

我正在运行 Windows 7 Pro 并在 Eclipse 中处理 Java 应用程序。我需要 Eclipse 将用户指定的命令(例如'chkdsk C:')发送到命令提示符,然后输出到 Eclipse 中的控制台,无论命令提示符会打印什么。我有发送命令工作和接收文本回来。但是,当我运行 chkdsk 时,我需要具有命令会话的管理员权限。我从这里的线程中看到:

Java: run as administrator

执行此操作的一种方法是通过 .manifest 文件。但是,我无法理解如何为 Java 创建清单文件:

.manifest 文件是否只是与 .CLASS 文件一起进入 Eclipse 工作区?如果我把它放在那里,它会在我运行程序时自动运行以管理员模式启动我的程序吗?

以上帖子给出的链接:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

似乎是 Visual-Studio 特定的,是否有适用于 Java 程序 .manifest 文件的示例代码?我需要在 Visual Studio 中创建 .manifest 文件还是只是一个文本文件?

此外,清单文件的名称是 yourProgram.exe.manifest ...据我所知,Java 不会创建 .exe 种类的可执行文件,对吗?清单文件应该像上面那样命名还是需要像 yourProgram.CLASS.manifest 这样的名称?

感谢您的帮助!

【问题讨论】:

  • 如 Luke Woodward 所述,Java manifest (.MF)Windows style manifest (.manifest) 是两个不同的文件。通常,我们为 jar 创建一个 EXE 启动器。像 Launch4J 这样的 EXE 启动器可以在 EXE 中嵌入一个 Window 样式的清单。见链接stackoverflow.com/questions/258728/…

标签: java command-line manifest administrator


【解决方案1】:

here 描述的应用程序清单和 Java 清单文件(在 META-INF/MANIFEST.MF 的 JAR 文件中)是两个完全独立的概念,它们仅共享一个名称。 META-INF/MANIFEST.MF 中没有任何内容可以帮助 Java 可执行文件获得提升。

此外,需要提升的是 JVM,而不是类文件。将 .manifest 文件与所有类文件放在一起不会有任何效果。

如果我不得不做这样的事情,我首选的方法是使用诸如elevate.exe 之类的程序来调用CHKDSKelevate.exe 可以在this blog article 找到,链接到您提到的问题中。 elevate.exe我没测试过,作者原来是为Windows Vista写的,所以不知道在Windows 7上效果如何。

似乎CHKDSK 是您的应用程序中唯一需要提升的部分。如果是这样,从安全的角度来看,在大多数情况下它可以在没有的情况下管理整个应用程序,而不是一直提升整个应用程序是有意义的。

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 2013-02-15
    • 1970-01-01
    • 2015-10-09
    • 2012-04-18
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多