无法在vista下重新创建命名管道

时间:2009-12-20 04:33:52

标签: c++ winapi windows-vista named-pipes

在我的应用程序中,我有应用程序和服务,为应用程序做的东西。他们通过命名管道进行通信。现在我可以启动应用程序,它启动服务并连接,这很好用。

当应用程序下载更新时,它会自动重新启动(在使用模块中卸载)终止服务,然后再次启动服务以安装更新。这在Windows XP和7上工作正常,但Vista在尝试重新创建管道时仍然返回Access拒绝。

我使用标志FILE_FLAG_FIRST_PIPE_INSTANCE创建管道,因为只有一个管道。我使用CreateProcess重新启动应用程序,新实例等待旧实例停止。

如果我完全杀死了应用程序并重新启动它,它可以安装更新并正常启动。

这让我疯了,任何想法?

1 个答案:

答案 0 :(得分:1)

您将哪种安全属性传递给打开管道句柄的CreateFile调用?你打电话给CreateProcess时是否允许继承句柄?