নোটপ্যাড সব মারছে?


134

একটি উইন্ডোজ সার্ভার 2012 আর 2 সিস্টেমে, কোনও কোটলিন প্রোগ্রাম FileChannel.tryLock()কোনও ফাইলে একটি এক্সক্লুসিভ লক ধরে রাখার জন্য ব্যবহার করে:

val fileRw = RandomAccessFile(file, "rw")
fileRw.channel.tryLock()

এই লকটি জায়গায় রেখে, আমি ফাইলটি এটি দিয়ে খুলতে পারি না :

  • শব্দ প্যাড
  • নোটপ্যাড ++,
  • প্রোগ্রামারিভাবে সি # এর সাথে কোনও মানের জন্য FileShare:

    using (var fileStream = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (var textReader = new StreamReader(fileStream))
    {
        textReader.ReadToEnd();
    }
    
  • কমান্ড লাইন থেকে, typeকমান্ড:

    C:\some-directory>type file.txt
    The process cannot access the file because another process has locked a portion of the file.
    
  • ইন্টারনেট এক্সপ্লোরার (হ্যাঁ, আমি মরিয়া ছিলাম)

আমি করতে নোটপ্যাড দিয়ে খুলুন।

হ্যাক নোটপ্যাড কীভাবে কোনও লক করা ফাইল খুলতে সক্ষম যা অন্য কিছুই করতে পারে না?

উত্তর:


202

নোটপ্যাড ফাইলগুলি প্রথমে মেমরির মাধ্যমে ম্যাপিং করে সেগুলি পড়েন, আপনি চেষ্টা করেছেন এমন অন্য সম্পাদকদের দ্বারা সম্ভবত "ব্যবহৃত" ফাইল পড়ার প্রক্রিয়াটি সম্ভবত ব্যবহার করা উচিত নয়। এই পদ্ধতিটি যদি তাদের কাছে একচেটিয়া পরিসীমা-ভিত্তিক লক থাকে তবে ফাইলগুলি পড়তে দেয়।

এর লাইন বরাবর কিছু দিয়ে আপনি সি # তে একই অর্জন করতে পারেন:

using (var f = new FileStream(processIdPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var m = MemoryMappedFile.CreateFromFile(f, null, 0, MemoryMappedFileAccess.Read, null, HandleInheritability.None, true))
using (var s = m.CreateViewStream(0, 0, MemoryMappedFileAccess.Read))
using (var r = new StreamReader(s))
{
    var l = r.ReadToEnd();
    Console.WriteLine(l);
}

58
মাইক্রোসফ্টের রেমন্ড চেন আরও বিশদে নিশ্চিত করেছেন : একটি ফাইল লোড করতে নোটপ্যাড ফাইলটির একটি মেমরি-ম্যাপযুক্ত ফাইল হিসাবে একটি মানচিত্র তৈরি করে এবং এটি উত্স হিসাবে ব্যবহার করে। কোডটি এনকোডিংটি বের করে দেয়, প্রয়োজনে ইউটিএফ -16 এলএতে একটি কোড পৃষ্ঠা রূপান্তর সম্পাদন করে, ফলাফলটি একটি মেমরি ব্লকে রাখে এবং তারপরে EM_SETHANDLE বার্তাটি ব্যবহার করে পুরো ব্লকটিকে সম্পাদনা নিয়ন্ত্রণে সরিয়ে দেয়।
স্টিভয়েসিয়াক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.