Tôi muốn phát xung quanh bằng cách sử dụng MemoryMappedFile để truy cập tệp nhị phân hiện có. Nếu điều này thậm chí có thể hoặc tôi là một người điên?UnauthorizedAccessException trên MemoryMappedFile trong C# 4
Ý tưởng sẽ là ánh xạ tệp nhị phân hiện có trực tiếp vào bộ nhớ cho một số hoạt động tốt hơn tốc độ cao hơn. Hoặc để ít nhất xem làm thế nào những điều này làm việc.
using System.IO.MemoryMappedFiles;
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\testparsercap.pcap");
MemoryMappedFileSecurity sec = new MemoryMappedFileSecurity();
System.IO.FileStream file = fi.Open(System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite);
MemoryMappedFile mf = MemoryMappedFile.CreateFromFile(file, "testpcap", fi.Length, MemoryMappedFileAccess.Read, sec, System.IO.HandleInheritability.Inheritable, true);
MemoryMappedViewAccessor FileMapView = mf.CreateViewAccessor();
PcapHeader head = new PcapHeader();
FileMapView.Read<PcapHeader>(0, out head);
tôi nhận được System.UnauthorizedAccessException là unhandled (Message = Truy cập vào các con đường bị từ chối.) Trên dòng mf.CreateViewAccessor().
Tôi không nghĩ rằng đó là quyền của tệp, vì tôi đang chạy với tư cách là người dùng quản trị viên không an toàn và không có bất kỳ chương trình nào khác mở có thể có khóa đọc trên tệp. Đây là trên Vista với UAC vô hiệu hóa.
Nếu đơn giản là không thể và tôi đã bỏ sót điều gì đó trong tài liệu, vui lòng cho tôi biết. Tôi hầu như không thể tìm thấy bất cứ điều gì ở tất cả tham chiếu tính năng này của .net 4.0
Cảm ơn!
Để tạo trình truy cập cho toàn bộ tệp, hãy sử dụng 'CreateViewAccessor (0, 0, MemoryMappedFileAccess.Read)' –