当前位置:  开发笔记 > 编程语言 > 正文

如果路径受到保护,请求Windows Vista UAC提升?

如何解决《如果路径受到保护,请求WindowsVistaUAC提升?》经验,为你挑选了2个好方法。

对于我的C#应用​​程序,我不想总是在应用程序启动时提示提升,但如果他们选择了受UAC保护的输出路径,那么我需要请求提升.

那么,如何检查路径是否受UAC保护,然后如何请求提升执行中?



1> Adrian Clark..:

检测他们是否无法执行操作的最佳方法是尝试并捕获UnauthorizedAccessException.

但是,正如@ DannySmurf 正确指出的那样,您只能提升COM对象或单独的进程.

Windows SDK Cross Technology Samples中有一个名为UAC Demo的演示应用程序.此演示应用程序显示了使用提升的进程执行操作的方法.它还演示了如何确定用户当前是否为管理员.



2> TheSmurf..:

请求提升中期执行要求您:

    使用提升的COM控件,这将提示

    启动从头开始升级的第二个进程.

在.NET中,目前无法提升正在运行的进程; 你必须做一件上面的hackery事情,但所做的就是给用户一个当前进程被提升的外观.

我能想到的唯一方法是检查一个路径是否是UAC提升的,就是在你处于未升级状态时尝试对它进行一些简单的写操作,捕获异常,提升并再试一次.


请注意,这不是.NET限制 - 它是用户帐户控制系统的一般限制.
请注意,这不是UAC限制 - 它是Windows NT中安全模型的一般限制(正在运行的进程无法更改其安全令牌).
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有