从cmd以管理员身份通过java代码运行应用程序

时间:2014-01-31 10:54:26

标签: java cmd administrator

我从我手动打开的CMD执行了 netsh 命令,从一开始右键单击CMD图标,然后从选项中选择以管理员身份运行。它工作正常。现在我试过了通过我的java代码运行netsh命令,然后它无法正常工作。当我运行该代码时没有发生任何事情。我想通过调用运行时类的适当方法从cmd运行像notepad.exe这样的应用程序我的java代码,但是如何使用我的java代码中的管理员权限打开相同的应用程序。r.exec("notepad");其中r是运行时类的对象引用将运行应用程序,但是这样打开的记事本不会在管理员模式。实际上我想从CMD学习以管理员模式运行应用程序就足以完成工作了。相应的CMD命令将作为参数传递给Runtime类的exec()方法。所以我的问题是:

  1. 如何使用管理员权限在Windows 8中运行CMD中的任何应用程序?
  2. 我想实现netsh的使用方式是一件好事,或者还有一些其他方法我必须使用java代码中的这些命令。
  3. 我在google搜索时看到了一些命令,但它们不适用于我,例如runas /user:administrator "notepad.exe"等。
  4.   

    由于

1 个答案:

答案 0 :(得分:1)

您不能使用runas /user:administrator方法,因为出于安全原因,这需要您无法从外部源(例如Java应用程序)提供密码输入。

我过去遇到过类似的问题,我使用PsExec解决了这个问题,在localhost上运行管理员用户名和密码,让我以管理员身份执行外部应用程序。

使用您的示例,您可以运行:

PsExec.exe \\\\127.0.0.1 /accepteula -u USER -p PASSWORD notepad.exe

“/ accepteula”标志阻止了第一次在计算机上运行时以交互方式接受EULA的要求。

这种方法可能需要进行一些调整才能使用您的设置,但希望它能为您提供一个起点。