Πέμπτη 2 Ιουλίου 2009

Τα Windows ποτέ δεν σταματούν να με εκπλήσσουν...

Από τον καιρό του MS-DOS τα Windows υποστήριζαν ένα μοτίβο ονομασίας των αρχείο της μορφής "όνομα τελεία επέκταση" (π.χ. somefile.txt).


Στην αρχή το MS-DOS επέτρεπε την ονομασία αρχείων με 8 χαρακτήρες για το όνομα και 3 χαρακτήρες για την επέκταση και φυσικά μόνο μια τελεία. Με την έλευση των Windows 95 προστέθηκε η δυνατότητα για μεγάλα ονόματα αρχείων (long file names) που δεν περιορίζονταν σε 8.3 όπως πριν. Εκτός από την αύξηση των χαρακτήρων, δώθηκε και η δυνατότητα να χρησιμοποιούνται περισσότερες από μία τελείες. Π.χ. το this.file.has.more.dots.txt είναι πλέον αποδεκτό ενώ το μέγιστο μέγεθος μιας διαδρομής (path) ή συνδιασμού διαρομής και ονομάτων αρχείων είναι 256 χαρακτήρες.


Συνεπώς δεν μπορούμε να δημιουργήσουμε αρχεία τα οποία μαζί με τη διαδρομή τους (π.χ. "c:\some directory\some other directory") να ξεπερνάνε τους 256 χαρακτήρες.


Τι γίνεται όμως αν σε ένα υπολογιστή με το όνομα PC1 έχουμε έναν κοινόχρηστο φάκελο, έστω τον "c:\Documents and settings\Username\My Documents\Shared" με το όνομα Shared και μέσω της διαδρομής δικτύου δημιουργήσουμε ένα αρχείο κειμένου σε αυτόν;


Στην περίπτωση αυτή η διαδρομή δικτύου θα ήταν \\PC1\Shared, κατά πολύ μικρότερη από την πραγματική θέση του ("c:\Documents and settings\Username\My Documents\Shared") οπότε τα Windows XP θα μας επέτρεπαν να δημιουργήσουμε το αρχείο λαμβάνοντας υπόψιν μόνο το μέγεθος της διαδρομής δικτύου κι όχι της πραγματικής θέσης. Έτσι αν εξαντλήσουμε τον αριθμό χαρακτήρων που τα Windows μας επιτρέπουν το αρχείο αυτό δεν θα είναι προσβάσημο από την πραγματική του διαδρομή αλλά μόνο από τη διαδρομή δικτύου! Έτσι δεν θα μπορεί κανείς να το ανοίξει, διαγράψει, μετονομάσει ή μεταφέρει σε άλλο φάκελο παρά μόνο μέσω της διαδρομής δικτύου. Καταπληκτικό;


Σε αυτό βέβαια υπάρχει κι ένα μικρό παραθυράκι... Αν στην κανονική διαδρομή για το αρχείο (π.χ. "c:\path\to\file\file.txt") προσθέσουμε χρησιμοποιήσουμε το \\?\ (οπότε θα έχουμε πλέον "\\?\c:\path\to\file\file.txt") το οποίο υποδεικνύει στα windows να ΜΗΝ ελέγξουν το path και το όνομα αρχείου για επιτρεπτούς χαρακτήρες και αριθμό χαρακτήρων πριν να εκτελέσουν την εντολή.

Έτσι μπορούμε από τη γραμμή εντολών να διαγράψουμε ή να μετονομάσουμε το αρχείο με τις γνωστές εντολές του MS-DOS ren, del ή και move για μεταφορά σε άλλο φάκελο. Αυτό το "κόλπο" μπορεί να χρησιμοποιηθεί και την περίπτωση που έχουν δημιουργηθεί μη κανονικά ονομαζόμενα αρχεία όπως π.χ. κάποιο αρχείο που τελειώνει σε τελεία.


Τώρα τι είχαν στο μυαλό τους στη Microsoft ένας Θεός ξέρει...