在我的应用程序中,我有应用程序和服务,为应用程序做的东西。他们通过命名管道进行通信。现在我可以启动应用程序,它启动服务并连接,这很好用。
当应用程序下载更新时,它会自动重新启动(在使用模块中卸载)终止服务,然后再次启动服务以安装更新。这在Windows XP和7上工作正常,但Vista在尝试重新创建管道时仍然返回Access拒绝。
我使用标志FILE_FLAG_FIRST_PIPE_INSTANCE创建管道,因为只有一个管道。我使用CreateProcess重新启动应用程序,新实例等待旧实例停止。
如果我完全杀死了应用程序并重新启动它,它可以安装更新并正常启动。
这让我疯了,任何想法?
答案 0 :(得分:1)
您将哪种安全属性传递给打开管道句柄的CreateFile
调用?你打电话给CreateProcess
时是否允许继承句柄?