В моем приложении у меня есть приложение и сервис, который делает вещи для приложения. Они общаются через именованный канал. Теперь я могу запустить приложение, и оно запускает службу и подключается, и это работает хорошо.
Когда приложение загружает обновление, оно перезапускается само (для выгрузки используемых модулей), убивая службу, а затем снова запускает службу для установки обновления. Это работает нормально на Windows XP и 7, однако Vista продолжает возвращать доступ, запрещенный при попытке воссоздать канал.
Я создаю канал с флагом FILE_FLAG_FIRST_PIPE_INSTANCE, чтобы иметь только один канал. Я перезапускаю приложение, используя CreateProcess, и новый экземпляр ожидает остановки старого экземпляра.
Если я полностью уничтожу приложение и перезапущу его, оно сможет установить обновление и запустить его нормально.
Это сводит меня с ума, есть идеи?