科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道用C#+WMI实现获取w3wp进程对应的应用程序池

用C#+WMI实现获取w3wp进程对应的应用程序池

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

自从用了ASP.NET2.0以后,这个问题被渐渐关注起来,目前的方法就是调用iisapp.vbs获取。

作者:巧巧读书 来源:巧巧读书 2008年9月1日

关键字: 进程 系统进程 进程管理

  • 评论
  • 分享微博
  • 分享邮件

  自从用了ASP.NET2.0以后,这个问题被渐渐关注起来,目前的方法就是调用iisapp.vbs获取。

  今天准备在我的文本转换工具里集成这个功能,于是,用C#实现了一下。

  using System;

  using System.Text;

  using System.Text.RegularExpressions;

  using System.Diagnostics;

  using System.Management;

  using System.Windows.Forms;

  namespace TextConvertor

  {

  /**//// <summary>

  /// W3wp 的摘要说明。

  /// </summary>

  public class W3wp

  {

  private W3wp(){}

  public static string GetAllW3wp(string input)

  {

  ObjectQuery oQuery = new ObjectQuery("select * from Win32_Process where Name='w3wp.exe'");

  ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oQuery);

  ManagementObjectCollection oReturnCollection = oSearcher.Get();

  string pid;

  string cmdLine;

  StringBuilder sb = new StringBuilder() ;

  foreach(ManagementObject oReturn in oReturnCollection)

  {

  pid = oReturn.GetPropertyValue("ProcessId").ToString();

  cmdLine = (string)oReturn.GetPropertyValue("CommandLine");

  string pattern = "-ap \"(.*)\"" ;

  Regex regex = new Regex(pattern, RegexOptions.IgnoreCase) ;

  Match match = regex.Match(cmdLine) ;

  string appPoolName = match.Groups[1].ToString() ;

  sb.AppendFormat("W3WP.exe PID: {0} AppPoolId:{1}\r\n", pid, appPoolName );

  }

  return sb.ToString();

  }

  }

  }

  实现的原理和VBScript简直一模一样。

  http://www.cnblogs.com/karoc/archive/2006/11/24/571245.html

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章