Windows:使用CMD(或Java)从非特权运行特权命令

时间:2011-09-06 15:11:46

标签: java windows cmd privileges administrator

我将拥有一个以管理员身份运行并侦听端口的服务。我的GUI程序将与管理员服务通信,以获取需要管理员权限的项目。

如果服务尚未运行,我将需要启动它。如何让我的GUI程序以管理员身份运行命令?我假设将询问用户是否要继续。

我希望有一些东西可以在CMD窗口中输入,因为它应该非常适合我的Java程序。我在想像run-as-admin javaw my-service.jar这样的地方run-as-admin是询问是否继续的命令。

4 个答案:

答案 0 :(得分:1)

Windows包含“runas”工具,可用于启动具有不同用户帐户的任何可执行文件。

然后在命令行上使用:

runas /user:Administrator "javaw -jar my-service.jar"

唯一的缺点是,你需要输入密码,你不能提供密码作为runas命令的参数

答案 1 :(得分:0)

我们使用Wrapper库: http://sourceforge.net/projects/wrapper/

official website目前似乎正在遭遇动态DNS问题,所以这里是wayback archive version

从命令行(以及扩展名为Java),您可以安装,卸载,启动和停止Java应用程序即服务。

答案 2 :(得分:0)

你这里有问题。非管理员进程无法启动服务。最简单的方法是安排服务自动启动。我强烈建议你采取这条路线。

您正在考虑做的事情涉及创建一个包含UAC manifestrequestedExecutionLevel设置为requireAdministrator的帮助应用程序。然后,此帮助应用程序可以启动该服务。这样做的问题是,它要求登录用户在管理员组中,您无法保证这种情况。

总而言之,首选自动启动服务。

答案 3 :(得分:0)

您无法以管理员身份执行批处理文件。您需要创建该文件的快捷方式,然后在快捷方式“以管理员身份执行”中设置标志,如果这是您真正想做的事情。

要从桌面执行此操作,请选择“快捷方式”,右键单击“属性” - >“快捷方式”选项卡 - >“高级”按钮。然后选中Execute as Administrator复选框。

要以编程方式执行此操作,请参阅How to set "Run as administrator" flag on shortcut created by MSI installer