我从我手动打开的CMD执行了 netsh 命令,从一开始右键单击CMD图标,然后从选项中选择以管理员身份运行。它工作正常。现在我试过了通过我的java代码运行netsh命令,然后它无法正常工作。当我运行该代码时没有发生任何事情。我想通过调用运行时类的适当方法从cmd运行像notepad.exe这样的应用程序我的java代码,但是如何使用我的java代码中的管理员权限打开相同的应用程序。r.exec("notepad");
其中r是运行时类的对象引用将运行应用程序,但是这样打开的记事本不会在管理员模式。实际上我想从CMD学习以管理员模式运行应用程序就足以完成工作了。相应的CMD命令将作为参数传递给Runtime类的exec()方法。所以我的问题是:
runas /user:administrator "notepad.exe"
等。由于
答案 0 :(得分:1)
您不能使用runas /user:administrator
方法,因为出于安全原因,这需要您无法从外部源(例如Java应用程序)提供密码输入。
我过去遇到过类似的问题,我使用PsExec解决了这个问题,在localhost上运行管理员用户名和密码,让我以管理员身份执行外部应用程序。
使用您的示例,您可以运行:
PsExec.exe \\\\127.0.0.1 /accepteula -u USER -p PASSWORD notepad.exe
“/ accepteula”标志阻止了第一次在计算机上运行时以交互方式接受EULA的要求。
这种方法可能需要进行一些调整才能使用您的设置,但希望它能为您提供一个起点。