Τρόπος μετακίνησης αρχείων που χρησιμοποιούνται

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 140570 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Μερικές φορές, οι εφαρμογές Win32 πρέπει να διαγράψουν, να μετονομάσουν ή να μετακινήσουν αρχεία που χρησιμοποιούνται από το σύστημα. Ένα συνηθισμένο παράδειγμα είναι αυτό των προγραμμάτων εγκατάστασης, τα οποία πρέπει να καταργούνται από τον σκληρό δίσκο του χρήστη, όταν τελειώνουν με την εγκατάσταση ενός πακέτου λογισμικού. Επίσης, σε ορισμένες περιπτώσεις, πρέπει να μετακινούν προγράμματα οδήγησης συσκευών τα οποία χρησιμοποιούνται από το σύστημα. Οι εφαρμογές χρειάζονται βοήθεια από το λειτουργικό σύστημα για να διαγράψουν ή να μετακινήσουν αυτά τα αρχεία.

Τα Windows 95 και τα Windows NT διαθέτουν το καθένα μία μοναδική μέθοδο η οποία επιτρέπει στις εφαρμογές να καταργούν, να αντικαθιστούν ή να μετονομάζουν αρχεία και καταλόγους που χρησιμοποιούνται. Αν και οι δύο πλατφόρμες διαφέρουν ως προς τον τρόπο εφαρμογής αυτών των μεθόδων, χρησιμοποιούν μία κοινή συνολική στρατηγική όπου η εφαρμογή καθορίζει ποια αρχεία θα υποστούν επεξεργασία και το σύστημα τα επεξεργάζεται, όταν γίνεται επανεκκίνηση. Το άρθρο αυτό εξηγεί με ποιον τρόπο μπορεί να χρησιμοποιηθεί από τις εφαρμογές η μέθοδος που παρέχει κάθε πλατφόρμα των Windows.

Περισσότερες πληροφορίες

Μετακίνηση αρχείων στα Windows NT

Οι εφαρμογές που βασίζονται στα Win32 και εκτελούν τα Windows NT πρέπει να χρησιμοποιούν τη λειτουργία MoveFileEx() με τη σημαία MOVEFILE_DELAY_UNTIL_REBOOT για να μετακινούν, να αντικαθιστούν ή να διαγράφουν αρχεία και καταλόγους που χρησιμοποιούνται. Την επόμενη φορά που θα γίνει επανεκκίνηση του συστήματος, το πρόγραμμα εκκίνησης των Windows NT θα μετακινήσει, θα αντικαταστήσει ή θα διαγράψει τα αρχεία και τους καταλόγους που έχουν καθοριστεί.

Για να μετακινήσετε ή να αντικαταστήσετε ένα αρχείο ή έναν κατάλογο που χρησιμοποιείται, μια εφαρμογή πρέπει να καθορίσει μια διαδρομή προέλευσης και μια διαδρομή προορισμού στον ίδιο τόμο (για παράδειγμα, μονάδα δίσκου C:). Εάν η διαδρομή προορισμού είναι έναν ήδη υπάρχον αρχείο, θα αντικατασταθεί. Εάν η διαδρομή προορισμού είναι ένας ήδη υπάρχων κατάλογος, δεν θα αντικατασταθεί, ενώ η διαδρομή προέλευσης και η διαδρομή προορισμού θα παραμείνουν αμετάβλητες. Το ακόλουθο είναι ένα παράδειγμα κλήσης για την μετακίνηση ή την αντικατάσταση ενός αρχείου ή για τη μετακίνηση ενός καταλόγου:
    // Move szSrcFile to szDstFile next time system is rebooted
    MoveFileEx(szSrcFile, szDstFile, MOVEFILE_DELAY_UNTIL_REBOOT); 				
Για να διαγράψετε ένα αρχείο ή έναν κατάλογο, η εφαρμογή πρέπει να ορίσει κενή τιμή για τη διαδρομή προορισμού. Εάν η διαδρομή προέλευσης είναι ένας κατάλογος, θα καταργηθεί μόνον εάν είναι κενός. Σημειώστε ότι, εάν πρέπει να χρησιμοποιήσετε τη λειτουργία MoveFileEx() για να καταργήσετε αρχεία από έναν κατάλογο, πρέπει να επανεκκινήσετε τον υπολογιστή πριν να ζητήσετε από τη λειτουργία MoveFileEx() να καταργήσει τον κατάλογο. Το ακόλουθο είναι ένα παράδειγμα σχετικά με το πώς μπορείτε να διαγράψετε ένα αρχείο ή να αδειάσετε έναν κατάλογο:
    // Delete szSrcFile next time system is rebooted
    MoveFileEx(szSrcFile, NULL, MOVEFILE_DELAY_UNTIL_REBOOT); 				

Μετακίνηση αρχείων στα Windows 95

Τα Windows 95 δεν εφαρμόζουν τη λειτουργία MoveFileEx(), αλλά παρέχουν σε όλες τις εφαρμογές που βασίζονται σε Win32, τις εφαρμογές 16-bit που βασίζονται στα Windows και τις εφαρμογές που βασίζονται σε MS-DOS έναν εναλλακτικό τρόπο μετακίνησης, αντικατάστασης και διαγραφής αρχείων (όχι όμως και καταλόγων) που χρησιμοποιούνται. Η δυνατότητα αυτή εφαρμόζεται μέσω της ενότητας [rename] ενός αρχείου με το όνομα Wininit.ini. Εάν το αρχείο Wininit.ini υπάρχει στον κατάλογο των Windows, το αρχείο Wininit.exe το επεξεργάζεται όταν γίνεται εκκίνηση του συστήματος. Αφού ολοκληρωθεί η επεξεργασία του αρχείου Wininit.ini, το αρχείο Wininit.exe το μετονομάζει σε Wininit.bak.

Η σύνταξη της ενότητας [rename] είναι:
    DestinationFileName=SourceFileName 				
Το όνομα αρχείου προορισμού (DestinationFileName) και το όνομα αρχείου προέλευσης (SourceFileName) πρέπει να βρίσκονται στον ίδιο τόμο και να είναι μικρά (8.3) ονόματα αρχείων, επειδή η επεξεργασία του αρχείου Wininit.ini πραγματοποιείται πριν να φορτωθεί το σύστημα δίσκου προστατευμένης λειτουργίας, ενώ τα μεγάλα ονόματα αρχείων είναι διαθέσιμα μόνον όταν εκτελείται το σύστημα δίσκου προστατευμένης λειτουργίας. Τα αρχεία προορισμού και προέλευσης που καθορίζονται στο αρχείο Wininit.ini και έχουν μεγάλα ονόματα αρχείων παραβλέπονται.

Η ενότητα [rename] μπορεί να έχει πολλές γραμμές με ένα αρχείο ανά γραμμή. Για να διαγράψετε ένα αρχείο, δώστε κενή τιμή στο 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() για την εγγραφή καταχωρήσεων στην ενότητα [rename], επειδή μπορεί να υπάρχουν πολλές γραμμές με το ίδιο DestinationFileName, κυρίως εάν έχει δοθεί σε αυτό κενή τιμή. Αντίθετα, θα πρέπει να προσθέτουν καταχωρήσεις αναλύοντας το αρχείο Wininit.ini και προσαρτώντας τις καταχωρήσεις στο τέλος της ενότητας [rename].

ΣΗΜΕΙΩΣΗ: Η ανάλυση του αρχείου Wininit.ini πρέπει να γίνεται πάντα με χρήση αναζήτησης που αγνοεί τη διάκριση πεζών-κεφαλαίων, επειδή ο τίτλος της ενότητας [rename] και τα ονόματα των αρχείων που περιέχονται σε αυτήν μπορεί να έχουν οποιονδήποτε συνδυασμό πεζών και κεφαλαίων γραμμάτων.

Οι εφαρμογές που χρησιμοποιούν το αρχείο Wininit.ini πρέπει να ελέγχουν εάν αυτό υπάρχει στον κατάλογο των Windows. Εάν το αρχείο Wininit.ini υπάρχει, τότε κάποια άλλη εφαρμογή έχει κάνει εγγραφή σε αυτό από την τελευταία φορά που έγινε επανεκκίνηση του συστήματος. Κατά συνέπεια, η εφαρμογή πρέπει να το ανοίξει και να προσθέσει καταχωρήσεις στην ενότητα [rename]. Εάν το αρχείο Wininit.ini δεν υπάρχει, η εφαρμογή πρέπει να το δημιουργήσει και να το προσθέσει στην ενότητα [rename]. Με τον τρόπο αυτό εξασφαλίζεται ότι η εφαρμογή σας δεν θα διαγράψει κατά λάθος καταχωρήσεις από άλλες εφαρμογές.

Για να αναιρέσετε μια λειτουργία μετονομασίας αρχείων πριν να γίνει επανεκκίνηση του συστήματος, πρέπει να καταργήσετε την αντίστοιχη γραμμή από την ενότητα [rename] του αρχείου Wininit.ini.

Ιδιότητες

Αναγν. άρθρου: 140570 - Τελευταία αναθεώρηση: Τετάρτη, 25 Ιανουαρίου 2006 - Αναθεώρηση: 4.3
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Win32 Application Programming Interface στις ακόλουθες πλατφόρμες
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
    • Microsoft Windows 2000 Standard Edition
    • Microsoft Windows Millennium Edition
    • Microsoft Windows NT 4.0
    • Microsoft Windows XP Professional
Λέξεις-κλειδιά: 
kbhowto kbapi kbprogramming kbkernbase kbfileio KB140570

Αποστολή σχολίων

 

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