我在使用ADSI查詢IIS元數據庫的網頁中運行一段代碼。代碼是這樣簡單:DefaultAppPool是否在IIS上使用特殊的提升特權運行?
DirectoryEntry iisNode =
new DirectoryEntry("/LM/W3SVC/1/ROOT/MyAspWebsite-1-128886021498831845");
foreach (DirectoryEntry de in iisNode.Parent.Children)
{
System.Console.WriteLine(de.Name);
}
這工作正常,當我運行IIS7/W2K8 DefaultAppPool下的頁面/網站。然而,當我創建自己的應用程序池,離開性質一樣的默認應用程序池,該代碼失敗,出現以下錯誤:
Caught: System.Runtime.InteropServices.COMException
Failed to parse virtual directory:
/LM/W3SVC/1/ROOT/MyAspWebsite-1-128889542757187500
System.Runtime.InteropServices.COMException (0x80070005): Access is denied.
請問默認應用有哪些特權?我沒有看到任何記錄。我需要這個在非默認應用程序池中工作,但沒有給整個工作進程提升權限。我也嘗試使用IIS7運行的機器上的管理員使用DirectoryEntry構造函數的用戶名和密碼參數,但這並沒有改變任何內容。我還會注意到,這在IIS6和W2K3上工作罰款。
任何幫助表示讚賞。
您確定這兩個應用程序池都在相同的身份下運行嗎? – kemiller2002 2009-06-10 14:21:25
是的,如果您在進程瀏覽器中查看,它們都作爲NT AUTHORITY \ NETWORK SERVICE運行,並且都具有「系統」的完整性。 如果您查看進程資源管理器下的安全選項卡以查看w3wp.exe的兩個實例的高級屬性,它們屬於完全相同的一組組,並且只有一處不同,DefaultAppPool是IIS APPPOOL \ DefaultAppPool組的一部分,並且自定義應用程序池屬於IIS APPPOOL \ CustomAppPool組。 – 2009-06-10 14:56:50