2009-09-02 43 views
0

我的桌面計算機上運行了一個程序,它使WCF服務可用。這是我以普通用戶身份登錄時運行的常規Windows窗體應用程序。從asp.net代碼隱藏在服務器上啓動進程,並讓它在服務器桌面上可見

我把WCF接口,這樣我可以看到從外部網頁程序的狀態。這很好,我可以看到正在運行的程序的狀態,甚至可以根據我的看法改變它們。

我唯一不能做的就是啓動程序。如果我進入網頁,程序是而不是正在運行,我希望能夠啓動它。一個簡單的Process.Start(programEXE)是不夠的,因爲程序啓動時,它不在桌面上,我看不到它,儘管它顯示在任務管理器中。

我試圖創建憑證,並用這些憑據啓動程序,但它有一個很模糊的退出「程序啓動失敗」的錯誤,或與我的憑據啓動,但仍然在桌面上顯示不出來。在後一種情況下,我在任務管理器中以我的名字看到它,但沒有看到實際的程序。

所以,如何在服務器上啓動一個程序,在登錄用戶的桌面上是可見的(這裏只有一個用戶,並且用戶總是登錄)?

此外,我可以做些什麼來確保這不會成爲安全漏洞?我想過的一個想法是在自己的虛擬目錄下運行launcher.aspx,在userid下,它只具有對program.exe所在的目錄的讀取權限,並且沒有其他讀或寫權限。還有其他建議嗎?

最後,只是要清楚:我是而不是試圖在用戶的計算機上啓動任何東西。單擊「啓動程序」鏈接,應在Web服務器,而不是在客戶端機器上啓動一個程序,但該程序應是可見的登錄用戶的服務器上。

+0

另一個評論:這是一個一次性爲我自己,並可能永遠不會安裝在任何計算機上,除了我自己的。 – 2009-09-02 22:42:02

回答

1

我幾乎肯定你不能那樣做。您的IIS作爲服務運行並且沒有與之關聯的特定桌面環境。你想要做的事情在網絡/服務器環境中並不真正起作用。

我建議你改變你贏形式應用到Windows服務,然後你可以開始/通過網站停止。如果你使用windows服務啓用「與桌面交互」,那麼我認爲你可以有一個form.Show()將應用程序帶到當前用戶的桌面環境。

如果你需要運行winform應用程序的唯一的人,那麼爲什麼不開始自己的應用程序?你聲明它可能永遠不會被任何計算機用於你自己的計算機之外,所以它似乎是一個訪問本地網站以啓動本地winform應用程序的複雜方法,只需通過快捷方式啓動winform應用程序即可。

+0

我很害怕答案會是這樣的。現在看看重寫我的應用程序作爲服務,或創建一個存根服務,其唯一的工作是啓動我的應用程序... – 2009-09-03 13:34:03

相關問題