Winform中默认以管理员方式启动的方法

简介:

我们知道,在Windows Vista ,微软系列操作系统中加入了“UAC”权限控制。这是一个显著的安全性能的提升。 
在这以后的系统中软件默认使用普通用户方式运行,除非软件声明要求使用管理员方式运行,或者用户强制使用管理员方式运行。 
那么我们在做一些敏感功能的时候,比如结束进程、读写内存、更改系统文件、更改系统设置等操作的时候,就需要提供管理员权限,否则无法获取对象。这时就需要我们手动的,显式的声明程序需要管理员权限运行。那么,我们又如何做到呢? 
这里引用微软MSDN的说法:

右键你的工程,新建一个mainfest(应用程序清单)文件, 
<!-- UAC 清单选项 
            如果要更改 Windows 用户帐户控制级别,请用以下节点之一替换 
            requestedExecutionLevel 节点。 
        <requestedExecutionLevel  level="asInvoker" uiAccess="false" /> 
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" /> 
        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" /> 
            指定 requestedExecutionLevel 节点将会禁用文件和注册表虚拟化。 
            如果要利用文件和注册表虚拟化实现向后 
            兼容性,则删除 requestedExecutionLevel 节点。 
        --> 
将 <requestedExecutionLevel level="asInvoker" uiAccess="false" />设置为requireAdministrator后,保存运行。当程序需要管理员权限时,就会提示用户是否允许。

这个是一种方法,还有另外一个方法,是我经常用的。这个需要写在Program.cs里面。

 
 
 1: static void Main(string[] Args)
 2: {
 3: /**
 4: * 当前用户是管理员的时候,直接启动应用程序
 5: * 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
 6: */
 7: //获得当前登录的Windows用户标示
 8: System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
 9: //创建Windows用户主题
 10: Application.EnableVisualStyles();
 11: 
 12: System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
 13: //判断当前登录用户是否为管理员
 14: if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
 15: {
 16: //如果是管理员,则直接运行
 17: 
 18: Application.EnableVisualStyles();
 19: Application.Run(new Form1());
 20: }
 21: else
 22: {
 23: //创建启动对象
 24: System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
 25: //设置运行文件
 26: startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
 27: //设置启动参数
 28: startInfo.Arguments = String.Join(" ", Args);
 29: //设置启动动作,确保以管理员身份运行
 30: startInfo.Verb = "runas";
 31: //如果不是管理员,则启动UAC
 32: System.Diagnostics.Process.Start(startInfo);
 33: //退出
 34: System.Windows.Forms.Application.Exit();
 35: }
 36: }









本文转自 OH51888 51CTO博客,原文链接:http://blog.51cto.com/rozbo/1298086,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
XML 数据格式 Windows
IIS服务启动提示当文件已存在时,无法创建该文件,183
IIS服务启动提示当文件已存在时,无法创建该文件,183
232 0
|
前端开发 Java 数据库
给角色分配菜单的功能后台代码的编写 | 学习笔记
快速学习给角色分配菜单的功能后台代码的编写
123 0
给角色分配菜单的功能后台代码的编写 | 学习笔记
|
PyTorch API 算法框架/工具
MMsegmentation教程 6: 自定义运行设定
MMsegmentation教程 6: 自定义运行设定
711 0
|
Web App开发
Tampermonkey - 用户脚本管理器
概述 Tampermonkey 是一款免费的浏览器插件,也是一款最为流行的用户脚本管理器。Tampermonkey是第一个可以用来让 Chrome 支持更多 UserScript 的 Chrome 插件扩展。
820 0
|
Windows
MFC中修改默认启动对话框方法
// CMyAppEApp 初始化BOOL CMyAppEApp::InitInstance(){// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControls()。
1363 0
|
C#
WPF程序 双击exe自动申请“以管理员方式运行”权限
原文:WPF程序 双击exe自动申请“以管理员方式运行”权限 实现方式: 在 xxx.exe 目录下包含其对应的清单文件(xxx.exe.manifest); 用记事本打开 manifest 文件,将文件中的项:更改为:
1318 0
Confluence 6 配置默认语言界面
Confluence 6 配置默认语言使用的界面。     https://www.cwiki.us/display/CONFLUENCEWIKI/Choosing+a+Default+Language ...
1139 0