【发布时间】: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