วิธีการย้ายแฟ้มที่กำลังใช้อยู่ในปัจจุบัน

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 140570 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

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

windows 95 และ Windows NT แต่ละให้วิธีการที่ไม่ซ้ำกันสำหรับโปรแกรมประยุกต์เพื่อที่เอาออก ในการช่วยแทน หรือเปลี่ยนชื่อไฟล์และไดเรกทอรีที่ใช้ แม้ว่าแพลตฟอร์มสองแตกต่างในวิธีที่จะใช้วิธีการเหล่านี้ ทั้งสองอย่างร่วมเชิงกลยุทธ์โดยรวมที่โปรแกรมประยุกต์ที่ระบุว่า แฟ้มใดที่จะประมวลผล และระบบกระบวนดังกล่าวเมื่อมัน reboots บทความนี้อธิบายถึงวิธีโปรแกรมประยุกต์สามารถใช้วิธีการให้มา โดยแต่ละแพลตฟอร์ม Windows

ข้อมูลเพิ่มเติม

การย้ายแฟ้มใน Windows NT

โปรแกรมประยุกต์ win32 โดยใช้โปรแกรมทำงานบน Windows NT ควรใช้ MoveFileEx() ด้วยค่าสถานะ MOVEFILE_DELAY_UNTIL_REBOOT เพื่อย้าย แทน หรือลบไฟล์และไดเรกทอรีที่มีอยู่ในขณะนี้การใช้ ในครั้งถัดไปที่ระบบจะ rebooted โปรแกรม bootup Windows NT จะย้าย แทน หรือลบแฟ้มที่ระบุและไดเรกทอรี

เมื่อต้องการย้าย หรือแทนแฟ้มหรือไดเรกทอรีที่ใช้ โปรแกรมประยุกต์ต้องระบุเส้นทางทั้งเป็นต้นทางและปลายทางบนไดรฟ์ข้อมูลเดียวกัน (ตัวอย่างเช่น ไดรฟ์ C:) ถ้าเส้นทางปลายทางเป็นแฟ้มมีอยู่ ดังกล่าวจะถูกเขียนทับ หากเส้นทางปลายทาง เป็นไดเรกทอรีที่มีอยู่ ดังกล่าวจะไม่ถูกเขียนทับ และเส้นทางทั้งแหล่งที่มาและปลายทางจะยังคงยังคง นี่คือการเรียกตัวอย่างการย้าย หรือแทนแฟ้ม หรือไดเรกทอรีย้าย:
   // Move szSrcFile to szDstFile next time system is rebooted
   MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT);
				
เมื่อต้องการลบแฟ้มหรือไดเรกทอรี โปรแกรมประยุกต์ต้องตั้งค่าเส้นทางปลายทางให้เป็น NULL หากเส้นทางของแหล่งที่มาเป็นไดเรกทอรี มันจะถูกเอาออกถ้าว่างเปล่า โปรดสังเกตว่า ถ้าคุณต้องใช้ MoveFileEx() เพื่อเอาแฟ้มออกจากไดเรกทอรี คุณต้องรีคอมพิวเตอร์ก่อนที่คุณสามารถเรียก MoveFileEx() เพื่อเอาไดเรกทอรี ที่นี่คือตัวอย่างของวิธีการลบแฟ้ม หรือการลบข้อมูลไดเรกทอรี:
   // Delete szSrcFile next time system is rebooted
   MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
				

การย้ายแฟ้มใน Windows 95

ไม่ใช้ MoveFileEx(), windows 95 แต่ทำให้เกิดการเรียกใช้วิธีการสำรองสำหรับโปรแกรมประยุกต์ทั้งหมด Win32 ลแบบ 16 บิตที่ ใช้ Windows และโปรแกรม-DOS ใช้โปรแกรมเพื่อย้าย การแทน หรือลบแฟ้ม (แต่ไม่ไดเรกทอรี) ที่กำลังใช้งาน ความสามารถในการทำงานนี้จะมีการใช้งานผ่านส่วน [เปลี่ยนชื่อของแฟ้มที่ชื่อ Wininit.ini ถ้า Wininit.ini อยู่ในไดเรกทอรี Windows, Wininit.exe กระบวนดังกล่าวเมื่อระบบเริ่มระบบ หลังจากที่ได้ถูกประมวลผล Wininit.ini, Wininit.exe เปลี่ยนชื่อดังกล่าวเพื่อ Wininit.bak

ไวยากรณ์ของส่วน [เปลี่ยนชื่อเป็น:
   DestinationFileName=SourceFileName
				
DestinationFileName และ SourceFileName ต้องอยู่บนไดรฟ์ข้อมูลเดียวกัน และมีชื่อย่อของแฟ้ม (8.3) ได้เนื่องจากดำเนินการ Wininit.ini ก่อนที่ระบบดิสก์โหมดที่ได้รับการป้องกันถูกโหลด และชื่อแฟ้มยาวมีไว้เฉพาะเมื่อมีการเรียกใช้ระบบดิสก์โหมดที่ได้รับการป้องกัน ปลายทางและแหล่งข้อมูลแฟ้มที่ระบุใน Wininit.ini ด้วยชื่อแฟ้มยาวจะถูกละเว้น

ส่วน [เปลี่ยนชื่อจะมีหลายบรรทัดที่ มีหนึ่งแฟ้มแต่ละบรรทัด เมื่อต้องการลบแฟ้ม ระบุ NUL เป็น DestinationFileName นี่คือบางตัวอย่างรายการ:
   [rename]
   NUL=C:\TEMP.TXT
   C:\NEW_DIR\EXISTING.TXT=C:\EXISTING.TXT
   C:\NEW_DIR\NEWNAME.TXT=C:\OLDNAME.TXT
   C:\EXISTING.TXT=C:\TEMP\NEWFILE.TXT
				
บรรทัดแรกทำให้ Temp.txt ถูกลบ วินาทีที่ทำให้ Existing.txt เพื่อที่ถูกย้ายไปยังไดเรกทอรีใหม่ บุคคลที่สามที่ทำให้ Oldname.txt การย้าย และเปลี่ยนชื่อ สี่ที่ทำให้แฟ้มมีอยู่เพื่อที่ถูกเขียนทับ โดย Newfile.txt

โปรแกรมประยุกต์ที่ควรไม่ใช้ WritePrivateProfileString() เขียนรายการไปยังส่วน [เปลี่ยนชื่อเนื่องจากสามารถมีหลายบรรทัด ด้วย DestinationFileName เดียวกัน โดยเฉพาะอย่างยิ่งถ้า DestinationFileName "NUL" แทน เหล่านั้นควรเพิ่มรายการ โดยการแยกวิเคราะห์ Wininit.ini appending รายการไปท้ายส่วน [เปลี่ยนชื่อ]

หมายเหตุ: ใช้การค้นหา case-insensitive การแยกวิเคราะห์ Wininit.ini เนื่องจากชื่อเรื่องของส่วน [เปลี่ยนชื่อและชื่อแฟ้มที่อยู่ภายในนั้นอาจมีการรวมกันของข้อความตัวพิมพ์ใหญ่และตัวอักษรตัวพิมพ์เล็กใด ๆ เสมอ

โปรแกรมประยุกต์ที่ใช้ Wininit.ini ควรตรวจสอบสำหรับการมีอยู่ในไดเรกทอรี Windows หาก Wininit.ini มี จากนั้นโปรแกรมประยุกต์อื่นได้เขียนนั้นเนื่องจากระบบถูกเริ่มใหม่ล่าสุด ดังนั้น แอพลิเคชันควรเปิด และเพิ่มรายการไปยังส่วน [เปลี่ยนชื่อ] ถ้า Wininit.ini ไม่มีอยู่ แอพลิเคชันควรสร้าง และเพิ่มไปยังส่วน [เปลี่ยนชื่อ] ทำให้แน่ใจว่า รายการจากโปรแกรมประยุกต์อื่นจะไม่ถูกลบโดยไม่ได้ตั้งใจ โดยโปรแกรมประยุกต์ของคุณ

เมื่อต้องการยกเลิกการดำเนินการในการเปลี่ยนชื่อแฟ้มก่อนที่ระบบจะ rebooted คุณต้องลบบรรทัดที่สอดคล้องกันจากส่วน [เปลี่ยนชื่อของแฟ้ม Wininit.ini

คุณสมบัติ

หมายเลขบทความ (Article ID): 140570 - รีวิวครั้งสุดท้าย: 12 ตุลาคม 2553 - Revision: 1.0
ใช้กับ
  • Microsoft Win32 Application Programming Interface เมื่อใช้กับ:
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows Millennium Edition
Keywords: 
kbapi kbfileio kbhowto kbkernbase kbprogramming kbmt KB140570 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:140570

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com