查找与我的IIS应用程序关联的命名管道

问题描述:

我有一个具有命名管道绑定的IIS应用程序。当我打开powershell并运行Get-ChildItem '\\.\pipe\'时,我看到一长串名字管道,名字像疯狂的GUID一样。其中一些以iisipm开头,我假设它们是由IIS创建的。如何以编程方式确定这些管道中的哪一个与我的IIS应用程序相关联?查找与我的IIS应用程序关联的命名管道

+0

你想要那个吗?无论如何,您可以通过IIS相关的cmdlet获取池的工作进程,然后通过读取进程的进程参数知道命名的管道信息。 –

+0

@LexLi我需要在创建特定命名管道后添加权限,但不知道哪个管道需要新权限。 – sirdank

命名管道只是通过SMB用于I/O的文件系统上的文件。你问的是有道理的说:“我的桌面上有一个文件,什么是使用它?!”我会告诉你,你的问题稍微抽象一些,因为有内置的方法可以通过安全描述符上的SACL和使用安全事件日志找出对正常文件的读/写操作。虽然这仍然可以使用命名管道来完成,但您必须将SACL添加到每个命名管道,并确保正确的审核已启用以解决此问题。

在这种情况下,完成要​​查找的内容的最简单方法是使用Process Explorer查找指定管道的所有打开句柄,并查找具有句柄的IIS工作进程。

要做到这一点:

  1. 运行进程资源管理器,以管理员
  2. 出版社,CTRL-F为查找
  3. 选择 “文件句柄或DLL ......”
  4. 类型,“ \ Device \ NamedPipe \“

..并确定哪个进程是您的IIS进程,然后确定哪个进程打开了哪个管道。

编辑:Handle.exe(也来自Sysinternals)也应提供此信息。

+0

不幸的是,我不能接受这个,因为我需要以编程方式找到它。你是否认为询问如何向特定用户授予IIS网站的命名管道写入权限会更有成效? – sirdank

+0

handle.exe输出到标准输出 - 如果你不打算编码到Windows API来枚举文件的句柄,那么你需要站在巨人的肩膀上(在这种情况下,马克Russinovich)。得到你的iis PID,传递给handle.exe,找到你的管道 - 这绝对可以通过编程完成:handle.exe -a -p pid-number – thepip3r