【问题标题】:ASP.NET PowerShell ImpersonationASP.NET PowerShell 模拟
【发布时间】:2011-02-09 00:53:48
【问题描述】:

我开发了一个 ASP.NET MVC Web 应用程序来执行 PowerShell 脚本。

我使用的是 VS 网络服务器,可以很好地执行脚本。

但是,要求是用户能够针对 AD 执行脚本以执行他们自己的用户帐户不允许执行的操作。

因此,我在创建 PowerShell 运行空间之前使用模拟来切换身份:

            Runspace runspace = RunspaceFactory.CreateRunspace(config);

        var currentuser = WindowsIdentity.GetCurrent().Name;

        if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) {
            runspace.Open();
        }

我使用域管理员帐户进行了测试,调用 runspace.Open() 时出现以下异常:

安全异常 说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。 异常详细信息:System.Security.SecurityException:不允许请求的注册表访问。

Web 应用程序在完全信任的情况下运行,并且我已将用于模拟的帐户明确添加到计算机的本地管理员组(即使域管理员组已经存在)。

我正在使用 advapi32.dll LogonUser 调用以与本文类似的方式执行模拟 (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

任何帮助表示赞赏,因为目前这有点阻碍。

谢谢 本

【问题讨论】:

    标签: asp.net powershell impersonation


    【解决方案1】:

    这篇博文有帮助吗?直接来自 PowerShell 开发人员。本质上,PowerShell 会启动一个新线程来运行管道,并且由于 .NET2.0 不允许该线程使用来自调用线程的模拟,因此它会失败。

    http://blogs.msdn.com/powershell/archive/2007/09/10/impersonation-and-hosting-powershell.aspx

    【讨论】:

    • 嗨,詹姆斯,我最初确实遇到过这篇文章,但它对我不起作用。但是,今天在另一台机器上尝试之后(并确保在更改 aspnet.config 文件后重新启动 - 重要!)我能够成功模拟另一个用户。谢谢
    • 又一个损坏的 Microsoft 支持链接...blogs.msdn.com/powershell/archive/2007/09/10/…
    猜你喜欢
    • 2010-10-19
    • 2016-03-19
    • 2010-09-29
    • 1970-01-01
    • 2014-02-21
    • 2015-07-09
    • 1970-01-01
    • 2016-05-12
    • 2010-12-26
    相关资源
    最近更新 更多