2009-12-20 35 views
0

在我的應用程序中,我有應用程序和服務,爲應用程序做東西。他們通過命名管道進行通信。現在我可以啓動應用程序,它啓動服務並連接,並且工作良好。無法在Vista下重新創建命名管道

當應用程序下載更新時,它會自動重新啓動它(在使用模塊中卸載)以終止服務,然後再次啓動服務以安裝更新。這在Windows XP和7上工作正常,但Vista在嘗試重新創建管道時不斷返回Access。

我創建了標誌爲FILE_FLAG_FIRST_PIPE_INSTANCE的管道,只有一個管道。我使用CreateProcess重新啓動應用程序,新實例等待舊實例停止。

如果我完全殺死應用程序並重新啓動它,它可以安裝更新並正常啓動。

這讓我瘋狂,任何想法?

回答

1

您傳遞給打開管道句柄的CreateFile調用的安全屬性是什麼類型?當您致電CreateProcess時,是否允許手柄繼承?

+0

允許手柄繼承的是什麼? – Lodle

+0

它允許子進程繼承它們。 –