0

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

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

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

我曾尝试添加访问控制,但这无济于事。仍然,找不到文件。

诚然,我对 Windows 服务不是很有经验。我试图创建简单的文件来写入我的异常,但它们也不是从服务中创建的。至于帐户,我使用的是我自己的 Windows 帐户(我有有限的本地管理员权限)。

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

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

4

1 回答 1

3

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

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

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

于 2013-08-02T18:16:36.370 回答