使用应用程序清单提升权限

众所周知,C#中最小的部署单元和可执行,可测试单元是程序集(Assembly),程序集一般分为类库(dll)和可执行文件(exe)。这些都是很浅显的,但是除此之外,我们经常会发现有一个后缀名为manifest的xml文件,这又是什么呢?它就是我们今天要提到的,应用程序清单文件。
 

程序集的组成

在这里插入图片描述
程序集可以由四部分组成。

  • 程序集清单(Assembly Manifest):每个程序集必须具备程序集清单,清单上面描述了程序集的版本号,元数据,定义了哪些类,提供一个渠道让宿主环境(hosting environment)在加载该程序集时了解该程序集,同时也是程序集能实现自我描述,反射技术能存在的基础。
  • 应用程序清单(Application Manifest):可执行的程序集可以用应用程序清单,让操作系统知道应该如何与此程序集打交道,最常见的使用在于要求用户提供管理员权限。
  • 代码(IL Code):程序集所包含的代码(已经被编译成了中间语言)。其实这么说还不完全准确,程序集包含的是模块(Module),模块中包含的才是代码,不过说程序集包含代码,也勉强可以。
  • 资源文件(Resource Files):程序集里面的资源文件,如图片,本地化资源等。

如何添加应用程序清单

默认情况下,通过visual studio创建一个应用程序是没有应用程序清单的。
在这里插入图片描述
通过右键手动添加一个应用程序清单。
在这里插入图片描述
在这里插入图片描述
 

通过应用程序清单获取管理员权限

双击打开该文件,找到requestedExecutionLevel一栏,发现默认值是asInvoker,证明默认情况下清单并不要求运行该程序时用户应该是管理员。
在这里插入图片描述

尝试将这个值改为requireAdministrator,生成项目。

在这里插入图片描述

这时我们发现,应用程序图标左下角新出现了一个盾牌,从VISTA版本(那个时候开始有UAC)开始,应用程序有这个图标就意味着运行的时候需要提升权限。双击尝试运行,果然要求提升为管理员权限的对话框弹了出来,这样,我们就通过一个小小的应用程序清单,实现了管理员权限的获得。是不是很有用呢?

猜你喜欢

转载自blog.csdn.net/deatharthas/article/details/88770157
今日推荐