打开VS2005、VS2008、VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件;如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工程属性的“安全性”标签,在安全性标签页中勾选“启用ClickOnce安全设置”,并选择“这是完全可信的应用程序”,保存工程,此时在Properties下已经自动生成了app.manifest文件。

将默认的app.manifest文件修改为

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"
  3. xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  5. <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  6. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  7. <security>
  8. <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
  9. <!-- UAC Manifest Options
  10. If you want to change the Windows User Account Control level replace the
  11. requestedExecutionLevel node with one of the following.
  12. <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
  13. <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  14. <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
  15. If you want to utilize File and Registry Virtualization for backward
  16. compatibility then delete the requestedExecutionLevel node.
  17. -->
  18. <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
  19. </requestedPrivileges>
  20. </security>
  21. </trustInfo>
  22. </asmv1:assembly>

配置文件修改后,我们运行应用程序,就会首先弹出这样一个提示框,点 Yes 后,程序才可以继续运行。

顺便说下,还可以通过一个方法了解到此时程序运行是不是管理员权限:

  1. public static bool IsAdministrator()
  2. {
  3. WindowsIdentity identity = WindowsIdentity.GetCurrent();
  4. WindowsPrincipal principal = new WindowsPrincipal(identity);
  5. return principal.IsInRole(WindowsBuiltInRole.Administrator);
  6. }

对于XML文件中引用的UAC执行权限级别,分别代表下列含义:

asInvoker : 应用程序就是以当前的权限运行。

highestAvailable: 这个是以当前用户可以获得的最高权限运行。

requireAdministrator: 这个是仅以系统管理员权限运行。

默认情况下是 asInvoker。

highestAvailable 和 requireAdministrator 这两个选项都可以提示用户获取系统管理员权限。那么这两个选项的区别在哪里呢?

他们的区别在于,如果我们不是以管理员帐号登录,那么如果应用程序设置为 requireAdministrator ,那么应用程序就直接运行失败,无法启动。而如果设置为 highestAvailable,则应用程序可以运行成功,但是是以当前帐号的权限运行而不是系统管理员权限运行。如果我们希望程序在非管理员帐号登录时也可以运行(这种情况下应该某些功能受限制) ,那么建议采用 highestAvailable 来配置。

vs2005 ,2008,2010中引入app.manifest(即c#程序在win7下以管理员权限运行方法)的更多相关文章

  1. csharp:引入app.manifest,程序在win7下以管理员权限运行配置方法

    https://msdn.microsoft.com/en-us/library/windows/desktop/hh848036(v=vs.85).aspx https://msdn.microso ...

  2. VS2005 工程在win7下使用管理员权限运行

    想关资料 http://stackoverflow.com/questions/13030492/set-administrator-privilege-for-my-c-application-in ...

  3. VS2005 VS2008编译的程序在Win7下以管理员身份运行的设置

    在VS2005或者VS2008 里面,直接项目右键---属性---连接器---清单文件---uac执行级别   选择requireAdministrator  重新编译 这样你的程序直接运行就拥有管理 ...

  4. C#项目中引入app.manifest管理员权限运行

    原文地址:https://blog.csdn.net/qq395537505/article/details/51010962 参考UAC:User Account Control 参考IE保护模式: ...

  5. 【转】vc++MCF/C++/C中怎样让应用程序获得或以管理员权限运行 ,ShellExecuteEX编程 --- 获取管理员权限

    ShellExecuteEX编程 --- 获取管理员权限:http://blog.csdn.net/jhui163/article/details/5873027 怎样让你的应用程序获得管理员权限:就 ...

  6. bat代码中判断 bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT

    · bat 代码中判断bat是否是以管理员权限运行,以及自动以管理员权限运行CMD BAT 一.判断bat是否是以管理员权限运行 @echo off net.exe session >NUL & ...

  7. 在MacOSX下用管理员权限打开App应用程序

    最近但疼的事情比较多,特别是升级了10.9以后. 难怪10.9会免费,它喵的当我们所有人都是测试开发者,那我们做实验,到处都是BUG...虽然是这么吐槽了,但是实际上也没有特别大的,能够影响到我的生活 ...

  8. jupyter notebook 中同时添加Python2和3,在conda下配置R语言运行的环境

    1.第一步,安装Python2的环境 首先,在安装anaconda的时候先选择一个Python安装,我先安装的是Python3 然后,在anaconda Prompt下创建Python2环境 现在,还 ...

  9. vs2005新建项目中没有ASP.NET WEB应用程序的解决方法

    在vs2003的年代,我们可以在项目模板中选择创建"asp.net web应用程序",可是到vs2005中,就变成了创建网站,原有的创建"asp.net web应用程序& ...

随机推荐

  1. iOS zipzap读取压缩文件

    最近在公司遇到一项需求,在不解压zip文件的情况下读取其中的文件,因为之前使用的ziparchive不能满足现在的需求,所以在网上一阵狂搜,终于找到了zipzap,实话说还真的难找. 之前读取本地zi ...

  2. IOS开发中针对UIImageView的几种常用手势

    // //  ViewController.m //  05-手势 // //  Created by wanghy on 15/9/21. //  Copyright (c) 2015年 wangh ...

  3. 03_天气查询_socket方式模拟_多线程方式

    [简述] 要重视Socket开发,企业后台服务特长使用Socket. 1.服务端要有可持续运行能力,保证线程一致在运行 2.并发处理能力,使用多线程 [工程截图] [WeatherRunner.jav ...

  4. HDU_2156 分数矩阵

    Problem Description             我们定义如下矩阵:            1/1 1/2 1/3            1/2 1/1 1/2            1 ...

  5. c++动态绑定与静态绑定

    C++为了支持多态性,采用了动态绑定和静态绑定 相关概念: 对象的静态类型:对象在声明时采用的类型,编译时确定 对象的动态类型:目前所指对象的类型,在运行时确定 class B { } class C ...

  6. QT5.0.1在Windows下 出现QApplication: No such file or directory 问题的解决办法

    第一个Qt 程序 环境window ,ide qt creator 新建一个 C++ 项目 > 新建一个main.cpp 输入如下代码 #include<QApplication> ...

  7. php 商务网站购物车联动地址

    数据表如下: CREATE TABLE IF NOT EXISTS `china` (`region_id` smallint(5) unsigned NOT NULL,  `parent_id` s ...

  8. H5小内容(六)

    Web Worker   基本内容     单线程与多线程       Worker可以模拟多线程的效果     定义 - 运行在后台的javascript     注意 - 不能使用DOM      ...

  9. yii2 ActiveRecord常用用法

    User::find()->all();    返回所有数据   User::findOne($id);   返回 主键 id=1  的一条数据   User::find()->where ...

  10. Yii 跨域设置

    控制器设置: abstract class ControllerBase extends Controller { public function __construct($id, $module, ...