ASP.NET中模拟管理员用户提升权限

简介:

在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;
                }
            }
        }
    }
}



 
 
目录
相关文章
|
2月前
|
前端开发 数据安全/隐私保护 UED
.NET 8 通用权限框架 前后端分离,开箱即用
【8月更文挑战第1天】基于.NET 8 的通用权限框架,采用前后端分离设计,实现真正的开箱即用!无需繁琐配置,一键启动权限管理新体验。利用.NET 8 的高性能与稳定性,结合灵活的前后端开发模式,显著提升开发效率,缩短项目周期。无论大小项目,皆能轻松应对,立即体验高效开发的新篇章!
|
消息中间件 JavaScript 关系型数据库
开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core
开箱即用的企业级前后端分离【.NET Core6.0 Api + Vue 2.x + RBAC】权限框架-Blog.Core
150 0
|
5月前
|
Java Spring
解决问题:‘HttpHeaders()‘ 在 ‘com.google.common.net.HttpHeaders‘ 中具有 private 访问权限
解决问题:‘HttpHeaders()‘ 在 ‘com.google.common.net.HttpHeaders‘ 中具有 private 访问权限
75 0
|
5月前
|
开发框架 关系型数据库 C#
.NET开源且好用的权限工作流管理系统
.NET开源且好用的权限工作流管理系统
|
开发框架 .NET API
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
|
存储 JSON 开发框架
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (上)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用
|
开发框架 前端开发 数据可视化
一个基于.Net+Vue开发的开源权限工作流系统
一个基于.Net 5开发的权限管理、工作流系统框架。借鉴了Martin Fowler企业级应用开发思想,框架选项都是使用最新的技术、前后端分离。
265 0
一个基于.Net+Vue开发的开源权限工作流系统
|
NoSQL Oracle JavaScript
一套.NET Core +WebAPI+Vue前后端分离权限框架
基于.NetCore开发的、构建的简单、跨平台、前后端分离的框架。此项目代码清晰、层级分明、有着完善的权限功能、日志模块;系统除了包含基础功能外,还集成了代码生成器、任务调度等功能。支持多种数据库、支持分布式部署,可用于OA、ERP、CRM、BI、物流系统等系统。
439 0
一套.NET Core +WebAPI+Vue前后端分离权限框架
|
缓存 前端开发 Oracle
基于 .NET Core MVC 的权限管理系统
基于.NET Core Web开发,借鉴了很多开源项目的优点,让你开发Web管理系统和移动端Api更简单。它可以用于所有的Web项目,例如网站管理后台、CMS、CRM、ERP、OA这类的系统和移动端Api。
310 0
基于 .NET Core MVC 的权限管理系统
|
Android开发
【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
438 0
【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )