首页 > 解决方案 > 共享全局内存内存映射文件

问题描述

我们正在尝试将以下代码从 .Net Framework 移植到 .Net Core。该代码创建了一个内存中的内存映射文件,该文件可由在不同登录帐户下运行的应用程序访问(没有管理员权限)。.Net Core 中不存在 MemoryMappedFileSecurity 类,如何设置共享内存映射文件?

var security = new MemoryMappedFileSecurity();<br/>
security.AddAccessRule(new AccessRule<MemoryMappedFileRights>(
                                    "everyone",
                                    MemoryMappedFileRights.FullControl,
                                    AccessControlType.Allow));

var memoryMappedFile = MemoryMappedFile.CreateNew(
                            "global\\SharedMap",
                            size,
                            MemoryMappedFileAccess.ReadWrite,
                            MemoryMappedFileOptions.DelayAllocatePages,
                            security,
                            HandleInheritability.Inheritable);

这是在 .Net 框架中工作多年的代码。

内存由 Windows 服务创建(没有后备文件)。然后由不是管理员的桌面客户端应用程序访问内存。

需要安全性,以便我们可以从桌面客户端看到“管理”服务内存。

我们正在尝试将我们的系统逐个转换为 .Net core 3.0。该系统包括由我们在世界不同国家的几家工厂生产的 100 多个组件。因此,我们不能一次“替换所有代码”。我们无法更改服务器使用的协议。

我们在内存映射方面有多年经验,但想知道 .Net core 中的什么技术应该等同于 MemoryMappedFileSecurity?

标签: c#.net-corememory-mapped-files

解决方案


推荐阅读