gpt4 book ai didi

c# - MemoryMappedFile , MemoryMappedFileAccess.ReadExecute 做什么或者我应该什么时候使用它?

转载 作者:行者123 更新时间:2023-11-30 17:25:10 29 4
gpt4 key购买 nike

我学习了一些关于 MemoryMappedFile 的基础知识,我看到有一个名为 MemoryMappedFileAccess.ReadExcuteenum 成员。

我认为这意味着当您打开一个 exe 文件时,它(我的程序)会执行它(.exe 文件)并读取其中的字节(.exe 文件)但是当我执行该程序时它会抛出一个错误:

Acceess to the path is denied [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();
}

谁能给我解释一下吗?

最佳答案

这里有很多东西可以尝试:

  1. 尝试使用 Read 打开,看看是否能解决您的问题
  2. 尝试添加完整的文件路径(以防无法打开)
  3. 打开文件时加上文件的长度

检查下面的三和一:

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();
}
  1. 然后检查您的文件“programe.exe”在您的文件系统中是否具有适当的权限

基于文档 ReadExecute只是可执行文件的读取访问权限:

ReadExecute 4

Read access to the file that can store and run executable code.

关于c# - MemoryMappedFile , MemoryMappedFileAccess.ReadExecute 做什么或者我应该什么时候使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59189625/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com