2012-09-25 54 views
1

在CML中执行此命令“java -jar installapp.jar”,我正在使用Java代码在Win8上安装EXE程序。 “以管理员身份运行”不会打开命令行窗口,但当前用户是管理员组的成员。由于Win8上的特权低而导致安装失败

但是,在同一个CML窗口中,如果我直接安装EXE,它就可以工作。它在Java执行安装时失败。

因此,任何人都可以给我一个小费?

非常感谢, 迈克尔

回答

0

要正确安装其中包括写入系统保护区的应用程序不能在没有通过UAC提升完成。这意味着CML窗口必须是以管理员身份运行

Java可执行文件标有要求asInvoker权限的清单。所以如果父进程没有被提升,这个过程将以丢弃管理员令牌开始。这是UAC的重点:即使你是管理员组的成员,在升级之前,你也不会获得完整无限的权限。

你是什么意思“直接安装exe”?

+0

感谢您的回应!通过“直接安装exe”我的意思是直接在CML中执行appinstall.exe,而不是调用链“CML-> Java-> Jar file-> appinstall.exe”。现在我已经提高了权限并可以进行安装,但是,我不想以管理员身份运行,但只需提高特权即可连接套接字,安装应用程序和编写系统文件。微软是否提供任何方式来实现这种细粒度访问控制?谢谢 –

+0

这有点奇怪...如果您直接在CML中运行'appinstall.exe',它可以写入Program Files。我的猜测是,在这种情况下'appinstall.exe'在虚拟化开启的情况下运行,并且实际上写入'VirtualStore'而不是预期的位置。 –

+0

细粒度访问控制?是和不是。您可以配置您的系统,以便用户(甚至管理员)只能访问系统的特定部分。但是,作为管理员,可以覆盖这些权限。通常你可以连接到一个套接字(除非防火墙被拒绝)。但要在所有用户或系统级别安装应用程序,您必须提升其全部管理权限。没有必要提升每个用户的安装量。写系统文件是不鼓励的,你不应该这样做:你可以打破系统或其他应用程序。 –

相关问题