.net 4.0 创建具有全局上下文的 MemoryMappedFile 会引发异常

Posted

技术标签:

【中文标题】.net 4.0 创建具有全局上下文的 MemoryMappedFile 会引发异常【英文标题】:.net 4.0 creating a MemoryMappedFile with global context throws exception 【发布时间】:2010-05-05 11:54:01 【问题描述】:

我想使用以下调用在 C# 4.0 中创建一个全局 MemoryMappedFile:

string MemoryMappedFileName = "Global\\20E9C857-C944-4C35-B937-A5941034D073";
ioBuffer = MemoryMappedFile.CreateNew(MemoryMappedFileName, totalIoBufferSize);

这总是会引发以下异常“System.UnauthorizedAccessException:对路径的访问被拒绝。” 如果我从内存映射文件名中删除“全局\”标识符,它可以工作,但我需要一个跨终端会话的内存映射文件。

ps:如果我以管理员身份运行,它可以工作......

谢谢, 克里斯托夫

【问题讨论】:

我想你已经找到了答案。特权。 好吧,问题是我还想编写自动化集成测试。如果它们在正常权限下运行,它们就会失败。这就是为什么我想知道是否可以在正常权限下创建全局共享内存。 【参考方案1】:

检查“创建全局对象”的本地安全策略。授予特定的受信任用户帐户权限。请注意安全问题,因此不要将其授予群组。

【讨论】:

以上是关于.net 4.0 创建具有全局上下文的 MemoryMappedFile 会引发异常的主要内容,如果未能解决你的问题,请参考以下文章

.NET 4.5 应用程序在具有 .NET 4.0 的系统上的特定功能兼容性

无法加载具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序

具有不变名称“System.Data.SqlServerCe.4.0”的 ADO.NET 提供程序未注册

.Net 4.0 中都有哪些实现 IQueryable<T> 的可实例化类型?

创建使用 .NET 4.0 的应用程序池

VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”