java - 以管理员身份从 Java 运行 Windows 命令行 - 创建 .manifest 文件

标签 java command-line manifest administrator

我正在运行 Windows 7 Pro 并在 Eclipse 中开发 Java 应用程序。我需要 Eclipse 将用户指定的命令(例如“chkdsk C:”)发送到命令提示符,然后将命令提示符打印的任何内容输出到 Eclipse 中的控制台。我可以发送命令并返回接收文本。但是,当我运行 chkdsk 时,我需要拥有命令 session 的管理员权限。我从这里的线程中看到:

Java: run as administrator

实现此目的的一种方法是通过 .manifest 文件。但是,我无法理解如何为 Java 创建 list 文件:

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

上述线程给出的链接:

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

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

另外, list 文件的名称是 yourProgram.exe.manifest ...据我了解,Java 不会创建 .exe 类型的可执行文件,不是吗? list 文件应该按上面的方式命名还是需要像 yourProgram.CLASS.manifest 这样的名称?

感谢您的帮助!

最佳答案

应用程序 list 描述 here和 Java list 文件(位于 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 是您的应用中唯一需要提升的部分。如果是这样,从安全角度来看,不让整个应用程序始终处于提升状态是有意义的,而大多数时候它可以在没有提升的情况下进行管理。

关于java - 以管理员身份从 Java 运行 Windows 命令行 - 创建 .manifest 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9539978/

相关文章:

java - Java中字符串数组的最大大小

mysql - 仅使用 root 密码访问 MySQL 数据库

android - 当前 Android 动态壁纸之上的 Activity UI - 如何像在 Android 桌面上一样处理向左或向右滑动?

java - 使用 Java 读取 .jar list 文件

java - Android Studio - 权重总和

java - 使用无垃圾 Log4j 在 Web 应用程序中进行参数化日志记录

java - 当指定-javaagent时,是否可以有一个包含=(等于)的jarpath?

java - Maven - 无法执行 JAR

java - 使用 Hibernate 归档数据的最佳方法

php - (Linux CLI PHP) 在执行期间捕获 CURL 的详细输出到文件