Windows:使用CMD(或Java)从非特权执行特权命令
我将以管理员身份运行并监听端口的服务。我的GUI程序将与管理员服务讨论需要管理员权限的项目。Windows:使用CMD(或Java)从非特权执行特权命令
如果服务还没有运行,我需要启动它。我如何让我的GUI程序以管理员身份运行命令?我假设用户会被问到是否要继续。
我希望有一些我可以键入一个CMD窗口,因为这应该很适合我的Java程序。我在想像run-as-admin javaw my-service.jar
,其中run-as-admin
是询问是否继续的命令。
您不能以管理员身份执行批处理文件。您需要创建该文件的快捷方式,然后在快捷方式“以管理员身份执行”中设置该标志,如果这真的是您想要执行的操作。
要从桌面执行此操作,请选择快捷方式,右键单击并选择属性 - >快捷方式选项卡 - >高级按钮。然后选中以管理员身份执行复选框。
要做到这一点编程,见How to set "Run as administrator" flag on shortcut created by MSI installer
快捷键看起来不错。我会仔细看看的。我不使用MSI安装程序,但是我想知道如何用手工制作的'.lnk'文件来做到这一点。 –
我们使用包装库这样的: http://sourceforge.net/projects/wrapper/
的official website似乎从动态DNS的问题,此刻的痛苦,所以这里是wayback archive version。
从命令行(以及扩展名为Java),您可以安装,卸载,启动和停止Java应用程序作为服务。
这里有个问题。非管理进程无法启动服务。最简单的做法是安排服务自动启动。我强烈建议你采取这种方式。
您在做什么会涉及创建一个帮助器应用程序,其中包括UAC manifest和requestedExecutionLevel
设置为requireAdministrator
。这个帮手应用程序可以启动服务。问题在于它要求登录的用户位于管理员组中,您不能保证会这样。
总而言之,自动启动服务是首选。
我同意这是首选。这是一个备份,所以如果服务被杀或失败,有一个追索 –
有时候人们使用监护服务来实现这一点。 –
好主意,虽然我仍然想回答实际问题,如果有的话。 –
的Windows包含可用于启动与不同的用户帐户的任何可执行工具“运行方式”。
在命令行,你会再使用:只有
runas /user:Administrator "javaw -jar my-service.jar"
的缺点是,你需要在密码输入,你可以不作为参数提供密码,以runas命令
管理员不是我的Vista机器上的单独用户帐户。它不会在大多数情况下。这是一个没有任何用户帐户密码的示例机器,两个用户帐户都是“管理员”。我运行命令,输入没有密码,它说'5:拒绝访问' –
一点也没有这听起来像是你正在寻找的解决方案,但你也可以改变特定服务的安全设置,以便非管理员可以启动它。 –
是的,不是我要找的:) –