2010-07-24 96 views

回答

0

这是不可能的。您可能拥有的最接近的体验就是创建一个服务来运行提升和一个无升级运行的Winforms应用程序,它只是服务的前端。尽管如此,你必须小心,如果你没有正确地关闭墙,可能会引起安全问题。

+0

我想我必须这样做,谢谢! – Red 2010-07-24 07:18:46

3

你不能。在未经用户同意的情况下运行的唯一另一种方式是作为计划任务。

+0

errm,所以服务是唯一的方法?那么,服务能否启动我的应用程序?我的应用程序有一些图形组件,这就是为什么我不能使它成为服务。 – Red 2010-07-24 03:21:45

+0

嗯,你有没有试过预定的任务? – fardjad 2010-07-24 06:25:10

+0

您不想让服务启动您的应用程序,因为您必须将其标记为与桌面交互,并且应用程序将运行提升。这开辟了巨大的可能性,该程序可以被利用来运行提升的其他程序并且基本上危害整个机器。 – 2010-07-24 14:28:16

1

Windows在启动时不会运行升级的应用程序,因为它不想提示您启动一百万启动应用程序。从技术上讲,您可以通过编写一个简单的启动器来解决这个问题,即ShellExecute是您的真实应用程序,但是这会在启动时提示您,并且非常烦人。其他人所说的最佳方法是将您需要管理权限的任务转移到服务中,并将用户界面分开。

1

我建议您阅读关于UAC team's blog regarding why startup applications are blocked from requiring elevation的帖子。有一点需要考虑:要求提升完全阻止标准用户使用您的应用。

官方指导:您的启动程序不应该要求提升。说实话,我很难想象一个场景,你可以合理地要求在启动应用程序提升。您能否提供更多关于的详细信息为什么您需要提升?

+1

我的猜测是他试图将特定的管理功能委托给标准用户,或者他正在解决上游应用程序设计问题。 – 2010-07-24 14:30:33

相关问题