我开发了一个ASP.NET MVC Web应用程序来执行PowerShell脚本.
我正在使用VS Web服务器,可以很好地执行脚本.
但是,要求用户能够针对AD执行脚本以执行不允许其自己的用户帐户执行的操作.
因此,我在创建PowerShell运行空间之前使用模拟来切换标识:
Runspace runspace = RunspaceFactory.CreateRunspace(config);
var currentuser = WindowsIdentity.GetCurrent().Name;
if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) {
runspace.Open();
}
Run Code Online (Sandbox Code Playgroud)
我已经使用域管理员帐户进行了测试,并且在调用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)
任何帮助表示欣赏,因为这是目前的一个显示阻止.
谢谢Ben