2010-12-08 48 views
0

我有一個應用程序可以停止服務,複製文件,然後再次啓動服務。我希望它顯示一個進度條,沒有額外的窗口,沒有更改屏幕,只需讓UAC做它的事情,並從那裏繼續(這是一個配置程序,所以它仍然可以用作標準用戶,副本上的盾牌圖標按鈕)。什麼是使用CopyData升級應用程序的好替代

這樣做的方式是通過以管理員身份打開一個單獨的應用程序(另一個應用程序本身,如msiexec所做的那樣不可見),然後新用戶通過SendMessage發送進度報告。這工作正常,但事實證明SendMessage只能在管理員/非管理員應用程序之間工作。重定向StandardInput將不起作用,因爲需要ShellExecute關閉,「runas」需要ShellExecute才能開啓。

我不想使用一個文件,因爲這會很慢並且存在安全風險(我之前發送的密鑰代碼與包含命令的CopyData消息一起)。有沒有其他方法可以重定向StandardInput/Output? MSI如何做到這一點?

我爲此使用C#。

+1

還有其他的方式來進行進程間通信:管道,套接字,內存映射文件,WCF等......你有沒有考慮過這個? – 2010-12-08 23:15:55

回答

0

我正在建議管道,就像西蒙一樣。

一個招數,不過,是在更高的完整性過程中需要創建管與中等強制性完整性級別標記它,讓你的中等完整性進程可以訪問它。

相關問題