有没有一种方法使应用程序仅在第一次运行时向用户显示UAC提示。此后,不再出现提示。
换句话说,我知道我们的应用程序需要用户的UAC权限才能执行某些操作。这很好。但我们不希望它在每次运行时都要求权限。用户是否可以永久授权我们的应用程序?或者我所要求的违反了UAC的基本原则?
我们正在使用.NET和Windows 7。
有没有一种方法使应用程序仅在第一次运行时向用户显示UAC提示。此后,不再出现提示。
换句话说,我知道我们的应用程序需要用户的UAC权限才能执行某些操作。这很好。但我们不希望它在每次运行时都要求权限。用户是否可以永久授权我们的应用程序?或者我所要求的违反了UAC的基本原则?
我们正在使用.NET和Windows 7。
你的问题的答案是:不,你不能这样做。
Microsoft特别禁止这种行为。如果应用程序可以将自己添加到排除列表中,那么我们会回到以前的混乱时期。
你需要做的是使你的程序不需要管理员访问权限。
问问自己:在Windows XP上,你做了什么?
Windows XP没有UAC的便利性。用户作为管理员运行您的程序的唯一方法是使用另一个用户登录。这比单击“继续”要糟糕得多。
如果你不想写与标准用户兼容的软件,那么你就是问题的一部分。UAC不是问题,UAC是一种便利。我可以关闭UAC,全职作为标准用户运行,但你的软件仍然无法工作。
如果有一个白名单,那么每个程序都会在安装时将自己添加到这样的列表中。
如果存在这样的白名单,那么你的应用程序将成为恶意软件的目标。它会喜欢修改二进制文件以执行它想要的内容;因为它知道该程序将被静默提升。
恶意软件会试图使用SendMessage来攻击你的应用程序,尝试传递无效的数据或结构,试图让你的管理员应用程序执行它想要的代码。
如果用户有禁用程序未来提示的选项,那么他们只会这样做,每个程序都将作为管理员运行,我们将回到以前的状态。那么如何管理白名单呢?比如用户改变了想法,父亲改变了想法,IT部门改变了想法,公司改变了想法,或者软件发布商改变了想法:当没有人被允许修改名单时,如何从名单中删除项目。
总结:白名单无法发挥作用。