博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net程序和管理员权限的一些事
阅读量:5321 次
发布时间:2019-06-14

本文共 1300 字,大约阅读时间需要 4 分钟。

1.对某个方法设置管理员权限运行(未考证)(假的,必须以管理员权限启动,不然报错)

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]public void MyMethod(){}

2.程序以管理员权限启动(通过修改项目配置)

方法1:添加mainfast文件,添加下面的代码:

3.程序中检测并以管理员权限启动

以下代码,虽然是弹出 管理员权限启动提示窗口,但是实际好像没有生效(不能创建文件夹,而右击菜单--管理员权限启动的话则可以)

System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);//判断当前登录用户是否为管理员if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator)){    return;}else{    //创建启动对象    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();    startInfo.UseShellExecute = true;    startInfo.WorkingDirectory = Environment.CurrentDirectory;    startInfo.FileName = Application.ExecutablePath;    //设置启动动作,确保以管理员身份运行    startInfo.Verb = "runas";    try    {        System.Diagnostics.Process.Start(startInfo);    }    catch    {        return;    }    //注意!!!!下面的代码是错误的,用下面的方式退出的话,重启不会真正的以管理员权限启动。需要直接从Main中return    //太奇葩了    //Application.Exit(); }

2017/6/30 更新

如何检测需要管理员权限呢?
为了提升用户体验,避免不必要的权限请求。
这里提供一个土方法, 直接在程序目录下读写文件,如果有权限异常,那么就需要提升权限。没有则不需要。
要考虑的问题,读、写、创建 文件、目录 要周全。

转载于:https://www.cnblogs.com/yczz/p/4971059.html

你可能感兴趣的文章
在线文件管理器elFinder支持中文
查看>>
String比较
查看>>
Django之Models
查看>>
动态添加SqlParameter
查看>>
SQLServer:探讨EXEC与sp_executesql的区别详解
查看>>
Spring缓存注解@Cache使用
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux定时任务(crond)
查看>>
apache编译安装php后需要注意以下配置
查看>>
20)升级登录标志
查看>>
机器学习之GMM-EM
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
为MS SQL 2005加入一个用户admin
查看>>
HTML5 LocalStorage 本地存储
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
jQuery Easy UI Resizable(调整大小)组件
查看>>
android AlarmManager采用
查看>>
Sail
查看>>
Fast R-CNN论文理解
查看>>