惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
爱范儿
爱范儿
V
Visual Studio Blog
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
M
MIT News - Artificial intelligence
罗磊的独立博客
L
LangChain Blog
Jina AI
Jina AI
IT之家
IT之家
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页

博客园 - 花生!~~

[技术分享] 谈谈网页数据采集中的“结构化”难题:从手动 XPath 到智能识别算法的演进 windows10 .NET http请求 tls1.3问题 微信历史版本下archive Cefsharp开发相关注意 .net PostgreSQL 相关 .net4.0 请求HTTPS出错:未能创建 SSL/TLS 安全通道 c#中的gcAllowVeryLargeObjects和OutOfMemoryException XML hexadecimal value 0x__, is an invalid character 创建窗口句柄时出错(error creating window handle) .net下WinDbg使用说明 在.net中修改Webbrowser控件的IE版本 System.Data.SQLite安装的相关问题 TextBox Ctrl+A不能全选的问题 HttpWebRequest 跳转后(301,302)ResponseUri乱码问题 如何用c#本地代码实现与Webbrowser中的JavaScript交互 在sqlite中,如何删除字段? how to drop a column in sqlite 如何在centos下配置redis开机自启动 WinForm中的图表控件Chart XPath高级用法(冰山一角)
.net程序和管理员权限的一些事 - 花生!~~ - 博客园
花生!~~ · 2015-11-17 · via 博客园 - 花生!~~

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


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

参考

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

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

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

具体操作

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

代码来源