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

p0e*_*kie 33 c# iis application-pool applicationpoolidentity

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

adt*_*adt 49

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

  • 好的,对于那些可能会苦苦挣扎的人,这是我用来获取启动AppPool的用户名的代码(它的标识):ApplicationPool pool = serverManager.ApplicationPools ["YoutAppPoolName"]; pool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser; string user = pool.ProcessModel.UserName; (7认同)
  • @p0enkie什么是`serverManager`? (2认同)

Don*_*nal 7

您需要引用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;            
}
Run Code Online (Sandbox Code Playgroud)