我们有一个win表单应用程序(基于4.0框架客户端配置文件),它是在自定义协议的帮助下从Web应用程序启动的。
对于非管理员用户(例如:高级用户,标准用户),当应用程序启动时,系统会弹出一个UAC(在系统中,UAC控制设置设置为“始终通知”,它必须是请求管理员密码。
请注意,我们使用清单来运行具有管理员权限的提升权限的应用程序
任何有助于避免这种情况的帮助都是可以理解的。提前致谢
此致
KARTHIK
答案 0 :(得分:1)
简单回答:你做不到。 UAC的目标是在未经用户批准的情况下阻止应用程序执行需要管理权限的操作。它是操作系统内置的安全功能,因此,未经用户批准,任何恶意软件都不会使计算机处于危险之中。
因此,由于它是一种安全功能,如果没有用户专门关闭系统上的UAC,您就无法绕过它。
答案 1 :(得分:1)
显然,您无法解决Windows中限制标准和高级用户可以执行的操作的安全问题。你的问题并不完全清楚,但如果你的目标是在以非管理员身份运行时不需要提升,那么你可以通过遵循这个高级程序来实现它:
从可执行文件中删除清单。在执行应用程序之前,Windows将不再需要提升。
在应用程序的初始化中(最好在它变得可见之前)检测执行应用程序的用户是否是管理员。
如果用户是本地管理员,请让应用程序的运行实例在此次启动应用程序的新实例时需要提升。然后,应用程序的第一个实例在提升的实例启动时终止。
如果用户不是本地管理员,则继续运行应用程序,但意识到应用程序正在执行而没有管理权限。
如果您这样做,管理员将获得UAC提示以提升应用程序,而非管理员将不会得到任何提示(也没有管理权限)。
您可以在an answer to a question on Stack Overflow about elevating process privilege programmatically
中获取有关如何执行其中某些任务的详细信息