我将拥有一个以管理员身份运行并侦听端口的服务。我的 GUI 程序将与管理员服务讨论需要管理员权限的项目。
如果该服务尚未运行,我将需要启动它。如何让我的 GUI 程序以管理员身份运行命令?我假设将询问用户是否要继续。
我希望我可以在 CMD 窗口中输入一些内容,因为它应该非常适合我的 Java 程序。我在想类似询问是否继续的命令run-as-admin javaw my-service.jar
在哪里。run-as-admin
我将拥有一个以管理员身份运行并侦听端口的服务。我的 GUI 程序将与管理员服务讨论需要管理员权限的项目。
如果该服务尚未运行,我将需要启动它。如何让我的 GUI 程序以管理员身份运行命令?我假设将询问用户是否要继续。
我希望我可以在 CMD 窗口中输入一些内容,因为它应该非常适合我的 Java 程序。我在想类似询问是否继续的命令run-as-admin javaw my-service.jar
在哪里。run-as-admin
Windows 包含工具“runas”,可用于以不同的用户帐户启动任何可执行文件。
然后在命令行上使用:
runas /user:Administrator "javaw -jar my-service.jar"
唯一的缺点是,您需要输入密码,您不能将密码作为参数提供给 runas 命令
你这里有问题。非管理员进程无法启动服务。最简单的做法是安排服务自动启动。我强烈建议你走那条路。
您正在考虑做的将涉及创建一个帮助应用程序,其中包含设置为的UAC 清单。然后,此帮助应用程序可以启动该服务。这样做的问题是它要求登录的用户在管理员组中,您不能保证会是这种情况。requestedExecutionLevel
requireAdministrator
总而言之,自动启动服务是首选。
您不能以管理员身份执行批处理文件。您需要创建该文件的快捷方式,然后在快捷方式“以管理员身份执行”中设置标志,如果这确实是您想要做的。
要从桌面执行此操作,请选择快捷方式,右键单击和属性->快捷方式选项卡->高级按钮。然后选中以管理员身份执行复选框。
要以编程方式执行此操作,请参阅如何在 MSI 安装程序创建的快捷方式上设置“以管理员身份运行”标志
我们为此使用 Wrapper 库:http: //sourceforge.net/projects/wrapper/
官网目前似乎遇到了动态 dns 问题,所以这里是wayback 存档版本。
从命令行(以及扩展为 Java),您可以安装、卸载、启动和停止作为服务的 Java 应用程序。