内存映射文件和Win服务 - 找不到服务器创建的文件

时间:2012-07-02 22:24:52

标签: windows service memory-mapped-files

我正在尝试使用Windows服务创建一个内存映射文件,以便它可以容纳许多其他Windows应用程序可以使用的静态数据。

我的问题是,当我启动服务时 - 服务可以轻松读写内存映射文件。但是,Windows应用程序不能。他们找不到文件错误。

使用相同的类来读取和写入内存映射文件,在两个Windows应用程序中我没有问题。所以,我认为内存映射文件的使用是正确的,但还有其他的东西 - 可能是我缺少的Windows服务领域。

我尝试添加访问控制但这没有帮助。仍然没有找到文件。

不可否认,我对Windows服务不是很熟悉。我试图创建简单的文件来编写我的异常,但它们也不是从服务创建的。至于帐户,我使用自己的Windows帐户(我有限制的本地管理员权限)。

我没有使用网络服务帐户,因为我需要使用我的用户帐户中嵌入的凭据访问数据库。

任何想法都会很棒,因为我已经开始转动我的车轮了。

1 个答案:

答案 0 :(得分:3)

您可能需要在@“Global \”之前添加MMF名称。我相信较新版本的Windows在与其他应用程序不同的会话下运行服务。

我看到了对以下文章的引用:Impact of Session 0 Isolation on Services and Drivers in Windows

您可能还需要修改本地安全策略“创建全局对象”,具体取决于您运行Windows应用程序的用户帐户。