我開發了一個ASP.NET MVC Web應用程序來執行PowerShell腳本。ASP.NET 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)
理解,因爲任何幫助,這是一個有點顯示塞在那一刻。
感謝 本
詹姆斯嗨, 我也碰到過這個帖子最初的時候,並沒有爲我工作。但是,今天在另一臺機器上嘗試之後(並且確保在更改aspnet.config文件後重新啓動了它 - 這很重要!),我能夠成功地模擬另一個用戶。謝謝 – 2010-05-04 10:13:41