views:

125

answers:

1

Hey,

In my application i have the app and a service that does stuff for the app. They communicate via a named pipe. Now i can start the app and it starts the service and connects and this works well.

When the application downloads an update, it restarts it self (to unload in use modules) killing the service and then starts the service again to install the update. This is working fine on Windows XP and 7 however Vista keeps returning Access denied when trying to recreate the pipe.

I create the pipe with the flag FILE_FLAG_FIRST_PIPE_INSTANCE as to only have one pipe. I restart the app using CreateProcess and the new instance waits for the old instance to stop.

If i completely kill the application and restart it, it can install the update and the start up normally.

This is driving me insane, any ideas?

+1  A: 

What kind of security attributes are you passing in to the CreateFile call that opens the handle to the pipe? Are you allowing handles to be inherited when you call CreateProcess?

Aaron Klotz
What does allowing handles to be inherited do?
Lodle