में मेमोरीमैप्डफाइल पर अनधिकृत एक्सेस अपवाद, मौजूदा बाइनरी फ़ाइल तक पहुंचने के लिए मैं मेमोरी मैप किए गए फ़ाइल का उपयोग करने के साथ खेलना चाहता था। यदि यह भी संभव हो या मैं पागल व्यक्ति हूं?सी # 4
विचार कुछ मौजूदा उच्च गति वाले संचालन के लिए मौजूदा बाइनरी फ़ाइल को सीधे स्मृति में मैप करना होगा। या कम से कम यह देखने के लिए कि इन चीजें कैसे काम करती हैं।
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);
मैं System.UnauthorizedAccessException बिना क्रिया था (संदेश = पथ के लिए प्रवेश निषेध है।) Mf.CreateViewAccessor() लाइन पर।
मुझे नहीं लगता कि यह फ़ाइल-अनुमतियां है, क्योंकि मैं एक अच्छा असुरक्षित व्यवस्थापक उपयोगकर्ता के रूप में चल रहा हूं, और कोई अन्य प्रोग्राम नहीं खुलता है जिसमें फ़ाइल पर रीड-लॉक हो सकता है। यह Vista पर यूएसी अक्षम है।
यदि यह संभव नहीं है और मुझे दस्तावेज़ में कुछ याद आया, तो कृपया मुझे बताएं। मुझे .NET 4.0
धन्यवाद की इस सुविधा के संदर्भ में कुछ भी मुश्किल से मिल सकता है!
पूरी फ़ाइल के लिए एक्सेसर बनाने के लिए, का उपयोग 'CreateViewAccessor (0, 0, MemoryMappedFileAccess.Read)' –