开发者社区> zting科技> 正文

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




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Netweaver和SAP云平台的quota管理
Netweaver和SAP云平台的quota管理
18 0
使用Supervisor 管理.net core mvc部署
Supervisor简介 Supervisor是一个用python编写的,linux平台下的进程守护工具,它通过子进程的方式运行目标服务。相比rc.d脚本,它能更加方便地知道子进程发生了什么,并在其崩溃时自动重启子进程。
1433 0
AliYun kubernetes 按应用人员设置权限
1.  前言:         aliyun 上采用容器服务 kubernetes 部署某业务的所有应用,每个应用有不同的Owner, 开发人员, 运维,需要根据应用分配不同的人访问权限。 需求: 运维人员(集群管理人员)---> 所有应用配置读写; 应用owner与运维 --> 所属应用的配置读写; 应用开发测试等人员
3954 0
mysql-用户权限管理
mysql-用户权限管理目录 用户管理创建mysql账号权限管理(建号常用)用户管理主要为了控制权限,让不同开发者,仅能操作属于自己的业务范围内的数据 创建mysql账号账户中涉及三个数据: 账户名: 用户名密码ip地址: 如果是本机,可以不写,@+主机地址端口号: 默认为3306,可以不写cre...
2853 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载