2011-10-12 64 views
0

小問題,是否有人能夠通過任何本地webdeployment控制iTunes? 最希望通過託管的IIS WCF服務?本地IIS-Com互聯網iTunes

我試過在我的WINDOS 7 IIS7.5,當我設置的過程模型 - 身份爲「本地系統」在包含WCF服務的IIS應用程序池,我看到了iTunes.exe在任務彈出經理。 但是iTunes並沒有'活着' - 沒有可視化的外殼,即使iTunesApp對象已經在我的WCF服務代碼中初始化了,執行任何操作都不起作用。

方面不是,通過Visual Studio 2010調試模式運行相同的服務,一切都很好!

  • UPDATE * 我是想通過我的窗戶電話溝通,iTunes和我想過要去一輪與網站/服務......但隨着新芒果更新,我們可以在手機上做TCP套接字本地!所以我會嘗試這條路線。

回答

0

服務不顯示任何UI窗口的原因是因爲Session Isolation。您的服務(IIS應用程序池進程)在會話0中運行。您的桌面連接到會話1(或者如果此計算機上有多個用戶登錄,則爲其他號碼)。

有幾個解決方法可以讓服務向用戶顯示UI:
1.您可以通過選項「允許服務與桌面交互」來標記服務。這僅適用於以本地系統運行的服務。此選項已棄用,應僅用於與舊服務的兼容性。
2.服務可以在用戶會話中啓動中間進程並與之通信。

如果你不想與iTunes進行交互,並只希望lanch它在用戶會話,你需要做的是:

  • 獲取Windows站名用戶正在運行。你可以使用windows terminal services API。您必須具有創意才能確定哪個用戶會話當前處於活動狀態(如果有多個用戶會話)。您可能還想要查詢用戶安全令牌,以便進程以用戶身份運行,而不是作爲本地系統運行。
  • 調用CreateProcessAsUser並傳遞STARTUPINFO結構。將STARTUPINFO中的lpDesktop字段設置爲指向您識別的窗口站。
+0

嘿Seva,那是一個詳細的答案!但我並不是在尋求與iTunes互動。所以我想知道有沒有辦法將命令傳遞到本地.net應用程序從asp.net網站,我會管理iTunes com互操作在該本地應用程序?像一個消息總線或任何東西? – Depechie

+0

你將不得不對兩件事情做出決定。首先 - 如何在用戶會話中啓動流程(讓我們稱之爲代理)。其次 - 如何在服務和代理之間進行溝通。完成#1的簡單方法是使用任務調度程序創建登錄任務。這將執行您每次用戶登錄時指定的任何進程。這個過程應該建立與你的服務的溝通。對於#2,你有廣泛的選擇 - 幾乎任何類型的進程間通信都可以。 COM,命名管道,TCP,共享內存段,共享文件,WCF等。 –

0

在Visual Studio 2010中進行調試時,此原因起作用的原因是因爲您在登錄時運行VS,並且您的登錄名具有iTunes可以與之交互的可見桌面。

如果您從服務帳戶下運行的進程啓動,那麼您會在任務管理器中看到可執行文件,但iTunes沒有可見桌面進行交互。

+0

那麼,任何解決這個問題呢?我也嘗試完全身份驗證,並作爲我自己的用戶運行...(或者我錯過了什麼)。還是有一個關於如何完成這個任務的「模型」(不管它是否是iTunes)?換句話說,如何通過本地IIS服務「啓動」本地應用程序? – Depechie

相關問題