以编程方式获取应用程序池标识

时间:2012-04-11 06:44:55

标签: c# iis application-pool applicationpoolidentity

如何在C#中以编程方式获取appPool的身份?我想要应用程序池用户而不是当前登录的用户。

3 个答案:

答案 0 :(得分:44)

您可以使用System.Security.Principal.WindowsIdentity.GetCurrent().Name来标识当前应用程序正在运行的标识。 This link提供了一个很好的实用程序,它显示了运行aspx的标识。

答案 1 :(得分:6)

您需要引用Microsoft.Web.Administration(在Microsoft.Web.Administration.dll中)。 Microsoft.Web.Administration.dll位于C:\ Windows \ System32 \ inetsrv。

//Add this to your using statements:
using Microsoft.Web.Administration;

//You can get the App Pool identity like this:    
public string GetAppPoolIdentity(string appPoolName)
{
    var serverManager = new ServerManager();

    ApplicationPool appPool = serverManager.ApplicationPools[appPoolName];
    appPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
    return appPool.ProcessModel.UserName;            
}

答案 2 :(得分:0)

对我来说似乎可行的另一种可能性是,它不需要安装Microsoft.Web.Administration程序包及其相关组件:

string appPoolUserIdentity = WindowsIdentity.GetCurrent().Name;

来自forums.asp.net