博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET中模拟管理员用户提升权限
阅读量:6884 次
发布时间:2019-06-27

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

在asp.net的站点中需要调用本地EXCEL的COM组件,由于NetworkService用户的权限不够,在执行Shapes.AddPicture方法(图片大于33K左右)时会长时间无响应,需要用administrator用户来启动Excel进程才行。

上网查了一些资料,发现可以利用advapi32.dll来在asp.net应用中模拟administrator用户来启动Excel的进程,这样执行Shapes.AddPicture方法就正常了。

模拟用户的代码如下:

using System.Runtime.InteropServices;using System.Security.Principal;using System.Security.Permissions;private const int LOGON_TYPE_INTERACTIVE = 2;private const int LOGON_TYPE_PROVIDER_DEFAULT = 0;[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]static public extern bool LogonUser(string userName, string domain, string password, int logonType, int logonProvider, ref IntPtr accessToken); public ExcelExport(string tableName){    IntPtr accessToken = IntPtr.Zero;    if (LogonUser("administrator", "domain", "password", LOGON_TYPE_INTERACTIVE, LOGON_TYPE_PROVIDER_DEFAULT, ref accessToken))    {        using (WindowsIdentity identity = new WindowsIdentity(accessToken))        {            using (WindowsImpersonationContext context = identity.Impersonate())            {                this.m_tableName = tableName;                if (ExcelRS == null)                {                    ExcelRS = new Microsoft.Office.Interop.Excel.ApplicationClass();                    ExcelRS.Visible = false;                    ExcelRS.DisplayAlerts = false;                    ExcelRS.Interactive = false;                    ExcelRS.DisplayInfoWindow = false;                }            }        }    }}
 
 
 
 

转载地址:http://epibl.baihongyu.com/

你可能感兴趣的文章
你对自己的定位是什么,就能成为什么样的人(转)
查看>>
全文检索引擎Solr系列——整合中文分词组件IKAnalyzer
查看>>
学习mongo系列(二) 新建数据库,collection ,insert(),save()
查看>>
chrome浏览器下用jQuery的load函数来跨域加载页面,响应状态status为(canceled)是什么情况? JSON和JSONP,也许你会豁然开朗,含jQuery用例...
查看>>
Tomcat 配置 HTTPS双向认证
查看>>
ZOJ 3511 Cake Robbery(线段树)
查看>>
[傅里叶变换及其应用学习笔记] 二十三. 线性时不变系统的基本定义
查看>>
[New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
查看>>
字体随着ProgressBar的加载而滚动
查看>>
Handler 机制再了解
查看>>
如果你是前端工程师,把你的网站或者你知道的网站加进来吧
查看>>
阿里云产品头条(2017年12月刊)
查看>>
探究SQL添加非聚集索引,性能提高几十倍之谜
查看>>
Java 如何不使用 volatile 和锁实现共享变量的同步操作
查看>>
Java架构-Java代码规范那些事
查看>>
容器监控实践—PromQL查询解析
查看>>
追踪解析 Disruptor 源码
查看>>
【剑指offer】让抽象问题具体化
查看>>
聊聊flink的AbstractNonHaServices
查看>>
搭建一个通用的脚手架
查看>>