我意识到.NET 4.0 处于测试阶段,但我希望有人对此有解决方案。我正在尝试从 DLL 创建内存映射文件:
FileStream file = File.OpenRead("C:\mydll.dll");
using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile(file,
"PEIMAGE", 1024 * 1024, MemoryMappedFileAccess.ReadExecute))
{
using (MemoryMappedViewStream viewStream = mappedFile.CreateViewStream())
{
// read from the view stream
}
}
不幸的是,无论我做什么,我总是得到一个UnauthorizedAccessException
,MSDN 文档指出:
操作系统拒绝了对文件的指定访问;例如,访问权限设置为 Write 或 ReadWrite,但文件或目录是只读的。
我已经使用 Sysinternals Process Monitor 监控了我的应用程序,这表明该文件确实已成功打开。我也尝试过内存映射其他非 DLL 文件,但结果相同。