【发布时间】:2011-01-09 15:45:55
【问题描述】:
背景
我编写了一个小型 C#/.NET 4.0 应用程序,它可以将安装在 Program Files 中的游戏的各种设置与不同机器上的同一游戏的其他副本同步(想想 Chrome 书签同步,但对于这个游戏)。同步本身是一个相对简单的事情,处理存储在游戏的 Program Files 文件夹中的文件。
在我的机器上,这可以正常工作,而无需通过 UAC 提升我的应用程序。 Windows 7 让游戏使用 Program Files 虚拟化,我的应用程序可以很好地使用它。
但是,在许多测试人员的机器上,我收到报告说应用程序要么无法处理文件,甚至在某些情况下甚至看不到游戏的文件夹!让用户右键单击并“以管理员身份运行”可以在任何情况下解决问题。
所以,我们只是将应用程序的清单设置为需要管理员权限,对吗?当用户手动调用应用程序或同步过程时,这很好(尽管并不理想),因为他们将与应用程序交互并准备好接受 UAC 请求。
但是,我的应用程序的功能之一是“自动同步”选项,它允许用户“设置并忘记”应用程序。使用此设置,应用程序将自己放入 HKCU\Software\Microsoft\Windows\CurrentVersion\Run 的注册表中,以便在启动时运行,并位于系统托盘中,根据需要在后台同步设置。
显然,我需要在这里变得更聪明。一旦用户登录到他们的帐户或之后以随机间隔显示 UAC 提示,这不是前进的方向。
那么,我的问题!
解决我需要在启动时运行需要管理员权限的应用程序的情况的最佳方法是什么?有没有办法让用户授权安装,使系统在启动/登录时自动以正确的权限运行应用程序而不提示?
更新 明确一点,这必须在代码中可以实现。
【问题讨论】:
-
我想这会启发你:stackoverflow.com/questions/2488632/… Cheers :)