สร้างไฟล์ TXT หรือ INI ที่เสียหายหรือไม่


0

บางครั้งเราได้รับรายงานไฟล์ที่เสียหายจากลูกค้า สิ่งเหล่านี้หายากและเป็นไปไม่ได้ที่จะทำซ้ำ เมื่อเราเข้าสู่เครื่องของลูกค้าจากระยะไกลเราจะพบว่าไฟล์ (โดยปกติจะเป็นไฟล์ INI) ไม่สามารถเปิดได้ ไม่สามารถคัดลอกไฟล์ในเครื่องเพื่อการวิเคราะห์ ตามตัวอย่างที่ จำกัด ไฟล์ที่เสียหายเหล่านี้มีขนาด "0kB" และสามารถลบได้เท่านั้น เมื่อสิ่งนี้เกิดขึ้นจะมีผลกับไฟล์ INI เพียงไฟล์เดียวจากหลายสิบไฟล์ ระบบที่เหลือก็ใช้ได้ เมื่อไฟล์ที่เสียหายถูกสร้างขึ้นใหม่ระบบจะกู้คืนทั้งหมด

เราไม่ทราบว่าสิ่งนี้เกิดขึ้นได้อย่างไรและต้องการทำซ้ำและหวังว่าจะแก้ปัญหาได้ อาจเป็นปัญหาของ Windows ข้อผิดพลาดในการเขียนโค้ดแม้แต่ปัญหาฮาร์ดแวร์ที่เกี่ยวข้องกับการปิดเครื่องโดยไม่คาดคิด สำหรับวัตถุประสงค์ในการทดสอบฉันได้สร้างไฟล์ TXT พร้อมกับขยะแบบสุ่มเช่นเดียวกับใน:

// Delphi code, but applies to any language
procedure TfrmDiagnostics.CreateCorruptFile();
var
    fpDump: TextFile;
    nChar: Integer;
begin
    RandSeed := (GetTickCount() mod 23);
    AssignFile(fpDump, 'C:\Corrupted.txt');
    for nChar:=1 to 100 do
        Write(fpDump, Chr(Random(250)));

    Flush(fpDump);
    CloseFile(fpDump);
end;

นี่สร้างไฟล์ที่ยุ่งเหยิงอย่างมากไบต์สองสามตัวแรกคือ: NREâA # »ขอบคุณ… ilL (‘- ØÏD YL & amp; d .... แต่ไฟล์ยังคงเปิดใน Notepad ++ และบรรณาธิการ ASCII อื่น ๆ อีกสองสามตัวที่ฉันพยายาม

เป็นไปได้หรือไม่ที่จะสร้างไฟล์ "เสียหาย" อย่างแท้จริงใน Windows ไฟล์ที่ Windows ปฏิเสธที่จะเปิด อาจเกี่ยวข้องกับการเล่นซอกับตารางการจัดสรรไฟล์ แต่ฉันสงสัยว่าผู้ใช้มีการเข้าถึง FAT

คำตอบ:


0

เหตุผลที่ไฟล์ไม่สามารถเปิดได้ไม่ได้เป็นเพราะไฟล์เสียหาย แต่เนื่องมาจากมีการล็อคการเขียนไฟล์

ซึ่งหมายความว่าการเชื่อมต่อเครือข่ายถูกตัดเมื่อไฟล์เปิดอยู่และเซิร์ฟเวอร์กำลังล็อคการทำงาน

ถ้าคุณเปิด Computer Management บนเซิร์ฟเวอร์และยกเลิกการเปิด Open Files คุณควรค้นหาการอ้างอิงถึงไฟล์. ini เหล่านั้นด้วยความสามารถในการลบล็อคหลังจากนั้นคุณสามารถทำสิ่งใดกับไฟล์อีก

หากต้องการสร้างสถานการณ์ดังกล่าวขึ้นอีกให้สร้างไฟล์หรือเปิดไฟล์ที่มีอยู่ เขียนลงไฟล์ ในขณะที่ทำสิ่งนี้ให้ปลดการเชื่อมต่อพีซีของคุณจากเครือข่ายแล้วเชื่อมต่อใหม่ ไฟล์จะเสียหายและไม่สามารถเปิดได้ในลักษณะเดียวกันกับที่คุณเคยพบมาก่อนหน้านี้

ตอนนี้ค้นหาสาเหตุที่ทำให้เครือข่ายตัดการเชื่อมต่อ ตัวอย่างเช่นเมื่อทำงานกับนโยบายกลุ่มโปรดทราบว่านโยบายกลุ่มจะรีเฟรชทุก ๆ 90 นาที หากคุณตั้งค่าการแชร์เพื่อแทนที่มันจะลบการแชร์และสร้างใหม่ทุก 90 นาทีด้วยช่วงเวลาสุ่มไม่กี่นาที หากคุณกำลังเขียนไฟล์ในเวลาดังกล่าวไฟล์นั้นอาจเสียหาย


2
น่าจะเป็นคำจำกัดความของความวิกลจริตหากคุณพยายามปกปิดทุก ๆ ไฟล์ที่เข้าไม่ถึงหรือเสียหาย ดังนั้นจึงง่ายขึ้น (และดีกว่าเนื้อหา) ที่จะมีการจัดการข้อยกเว้นที่ผ่านการแจ้งเตือนแจ้งให้ผู้ใช้ไฟล์. ini ถูกสร้างขึ้นใหม่ หากคุณไม่ได้พูดถึงไฟล์. ini ของแอปพลิเคชันของ บริษัท ของคุณมันจะซับซ้อนกว่า แต่ก็เป็นไปไม่ได้ที่จะครอบคลุมทุกเหตุผลที่เป็นไปได้ a .ini ไม่สามารถดำเนินการได้
Ramhound

ล็อคการเขียนจะป้องกันไฟล์ไม่ให้ถูกลบด้วยหรือไม่
Twisty Impersonator

มีวิธีในการสร้างรหัสที่ถูกแฮ็ก (ภาษาใด ๆ ) ในการสร้างไฟล์ในเครื่อง (เช่นไม่ผ่านเครือข่าย) โดยที่ยังคงมีการล็อคการเขียนเพื่อพยายามทำซ้ำ
AlainD

@ Twisty: ถูกต้อง Windows ไม่สามารถเปิดไฟล์ได้ แต่สามารถลบได้
AlainD

1
@Ramhound: ความคิดเห็นที่ยุติธรรมฉันจะเห็นสิ่งที่ฉันสามารถทำได้เพื่อเปลี่ยนรหัส "ตรวจสอบไฟล์นี้" ปัญหาของปัญหาแบบนี้คือปัญหาที่เกิดขึ้นน้อยมากจนคุณไม่แน่ใจว่าคุณได้แก้ไขข้อผิดพลาดหรือไม่เว้นแต่คุณจะทำซ้ำปัญหาก่อนและหลัง
AlainD
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.