c#-MemoryMappedFile,MemoryMappedFileAccess.ReadExecute做什么,或者什么时候应该使用它?
我学习了一些关于c#-MemoryMappedFile,MemoryMappedFileAccess.ReadExecute做什么,或者什么时候应该使用它?,c#,memory-mapped-files,memory-mapping,C#,Memory Mapped Files,Memory Mapping,我学习了一些关于MemoryMappedFile的基础知识,我看到有一个名为memorymappedficacess.ReadExcute的enum成员 我认为这意味着当你打开一个exe文件时,它(我的程序)会执行它(.exe文件)并读取其中的字节(.exe文件),但当我执行程序时,它会给我一个错误: 对路径的访问被拒绝[UnauthorizedAccessException] 霉菌代码: static void Main(string[] args) { FileSt
MemoryMappedFile
的基础知识,我看到有一个名为memorymappedficacess.ReadExcute
的enum
成员
我认为这意味着当你打开一个exe文件时,它(我的程序)会执行它(.exe文件)并读取其中的字节(.exe文件),但当我执行程序时,它会给我一个错误:
对路径的访问被拒绝[UnauthorizedAccessException]
霉菌代码:
static void Main(string[] args)
{
FileStream fs = new FileStream("programe.exe", FileMode.OpenOrCreate, FileAccess.ReadWrite,
FileShare.ReadWrite);
MemoryMappedFile memory = MemoryMappedFile.CreateFromFile(fs, "mapname", 0,
MemoryMappedFileAccess.ReadExecute,null,0,false);
MemoryMappedViewAccessor mmr = memory.CreateViewAccessor(0, fs.Length, MemoryMappedFileAccess.Read);
Console.ReadKey();
}
有人能给我解释一下吗?这里有很多东西可以尝试:
static void Main(string[] args)
{
// Try with Read here and Read on your create view to see if anything changes
FileStream fs = new FileStream("programe.exe", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
// Set the length of the file here.
MemoryMappedFile memory = MemoryMappedFile.CreateFromFile(fs, "mapname", fs.Length, MemoryMappedFileAccess.ReadExecute,null,0,false);
MemoryMappedViewAccessor mmr = memory.CreateViewAccessor(0, fs.Length, MemoryMappedFileAccess.Read);
Console.ReadKey();
}
@好的,我能做些什么来解决这个问题exception@CaiusJard是的,我已经读过了,好的,读和读的区别是什么?谢谢你的回复,但我已经用你的代码更改了我的代码,仍然抛出异常,当我用读替换读执行时,它工作正常,但我想知道读和读的区别是什么,ReadExecute??虽然答案不错,但我认为OP也需要解释。-“MemoryMappedFileAccess.ReadExecute做什么?我应该什么时候使用它?有人能解释一下吗?”不确定。您可能需要设置HandleInheritability。Read Truth可以说ReadExecute对于映射文件没有意义。映射文件用于在进程之间共享内存中的数据,我还没有找到ReadExecute使用的好例子。