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,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
Java API 调度
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
398 0
|
前端开发 Java 数据库
给角色分配菜单的功能后台代码的编写 | 学习笔记
快速学习给角色分配菜单的功能后台代码的编写
给角色分配菜单的功能后台代码的编写 | 学习笔记
PbootCMS开启后台菜单管理功能
PbootCMS开启后台菜单管理功能
733 0
PbootCMS开启后台菜单管理功能
|
Java 开发者
用户模块之退出功能|学习笔记
快速学习用户模块之退出功能
|
安全 Windows
win7系统想要用iis7远程桌面管理,可是他显示说你没有开通远程权限怎么解决?
  iis7远程桌面管理连接不上具体的操作如下:  首先打开桌面“计算机”图标,右键属性打开计算机属性菜单,  打开计算机属性(控制面板----系统和安全---系统选项)找到左侧的“远程设置”功能,  出现的“系统属性”菜单中,找到“远程‘选项卡,其中下方的“远程桌面”选项,选择其中一个(注意 远程...
1115 0
|
Windows
MFC中修改默认启动对话框方法
// CMyAppEApp 初始化BOOL CMyAppEApp::InitInstance(){// 如果一个运行在 Windows XP 上的应用程序清单指定要// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,//则需要 InitCommonControls()。
1412 0
|
C#
WPF程序 双击exe自动申请“以管理员方式运行”权限
原文:WPF程序 双击exe自动申请“以管理员方式运行”权限 实现方式: 在 xxx.exe 目录下包含其对应的清单文件(xxx.exe.manifest); 用记事本打开 manifest 文件,将文件中的项:更改为:
1385 0
Confluence 6 后台中的默认空间模板设置
Confluence 6 后台中的默认空间模板设置界面的布局。 https://www.cwiki.us/display/CONFLUENCEWIKI/Customizing+Default+Space+Content ...
917 0