我将拥有一个以管理员身份运行并侦听端口的服务。我的GUI程序将与管理员服务通信,以获取需要管理员权限的项目。
如果服务尚未运行,我将需要启动它。如何让我的GUI程序以管理员身份运行命令?我假设将询问用户是否要继续。
我希望有一些东西可以在CMD窗口中输入,因为它应该非常适合我的Java程序。我在想像run-as-admin javaw my-service.jar
这样的地方run-as-admin
是询问是否继续的命令。
答案 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 manifest且requestedExecutionLevel
设置为requireAdministrator
的帮助应用程序。然后,此帮助应用程序可以启动该服务。这样做的问题是,它要求登录用户在管理员组中,您无法保证这种情况。
总而言之,首选自动启动服务。
答案 3 :(得分:0)
您无法以管理员身份执行批处理文件。您需要创建该文件的快捷方式,然后在快捷方式“以管理员身份执行”中设置标志,如果这是您真正想做的事情。
要从桌面执行此操作,请选择“快捷方式”,右键单击“属性” - >“快捷方式”选项卡 - >“高级”按钮。然后选中Execute as Administrator复选框。
要以编程方式执行此操作,请参阅How to set "Run as administrator" flag on shortcut created by MSI installer