c# - MemoryMappedFile,MemoryMappedFileAccess.ReadExecute 做什么或我应该何时使用它?
c# - MemoryMappedFile , what MemoryMappedFileAccess.ReadExecute do or when should i use it?
我学习了一些关于 MemoryMappedFile
的基础知识,我看到有一个 enum
成员叫 MemoryMappedFileAccess.ReadExcute
。
我认为这意味着当你打开一个 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();
}
谁能给我解释一下吗?
这里有很多东西可以尝试:
- 尝试使用阅读打开,看看是否能解决您的问题
- 尝试添加完整的文件路径(以防无法打开)
- 添加文件打开时的长度
检查下面的三和一:
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();
}
- 然后检查您的文件 "programe.exe" 在您的文件系统中是否具有适当的权限
根据文档,ReadExecute 只是可执行文件的读取权限:
ReadExecute 4
Read access to the file that can store and run executable code.
我学习了一些关于 MemoryMappedFile
的基础知识,我看到有一个 enum
成员叫 MemoryMappedFileAccess.ReadExcute
。
我认为这意味着当你打开一个 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();
}
谁能给我解释一下吗?
这里有很多东西可以尝试:
- 尝试使用阅读打开,看看是否能解决您的问题
- 尝试添加完整的文件路径(以防无法打开)
- 添加文件打开时的长度
检查下面的三和一:
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();
}
- 然后检查您的文件 "programe.exe" 在您的文件系统中是否具有适当的权限
根据文档,ReadExecute 只是可执行文件的读取权限:
ReadExecute 4
Read access to the file that can store and run executable code.