2017-06-26 68 views
0

我有一個具有命名管道綁定的IIS應用程序。當我打開powershell並運行Get-ChildItem '\\.\pipe\'時,我看到一長串名字管道,名字像瘋狂的GUID一樣。其中一些以iisipm開頭,我假設它們是由IIS創建的。如何以編程方式確定這些管道中的哪一個與我的IIS應用程序相關聯?查找與我的IIS應用程序關聯的命名管道

+0

你想要那個嗎?無論如何,您可以通過IIS相關的cmdlet獲取池的工作進程,然後通過讀取進程的進程參數知道命名的管道信息。 –

+0

@LexLi我需要在創建特定命名管道後添加權限,但不知道哪個管道需要新權限。 – sirdank

回答

0

命名管道只是通過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

相關問題