Προς το περιεχόμενο

Πως ξεχωρίζω τα thumbs


lefi

Προτεινόμενες αναρτήσεις

Δημοσ.

Θέλω να βρώ έναν τρόπο να ξεχωρίζω εάν ένα αρχείο είναι thumb καθως και οποιοδήποτε αρχείο κάνει την ίδια δουλειά όπως για παράδειγμα το eh_thumbsvista.db.

Σκεύτηκα να ελέγχω αν η επέκταση είναι .db αλλά δεν είμαι σίγουρος ότι μόνο αυτά τα αρχεία έχουν αυτή την επέκταση.

 

Δουλεύω σε VB 2005 αλλά αν δεν είναι εύκολο μου αρκεί ένας "γενικός κανόνας" ώστε να δουλέψω πάνω εκεί.

 

Ευχαριστώ για οποιαδήποτε πρόταση.

Δημοσ.
Θέλω να βρώ έναν τρόπο να ξεχωρίζω εάν ένα αρχείο είναι thumb καθως και οποιοδήποτε αρχείο κάνει την ίδια δουλειά όπως για παράδειγμα το eh_thumbsvista.db.

Σκεύτηκα να ελέγχω αν η επέκταση είναι .db αλλά δεν είμαι σίγουρος ότι μόνο αυτά τα αρχεία έχουν αυτή την επέκταση.

 

Δουλεύω σε VB 2005 αλλά αν δεν είναι εύκολο μου αρκεί ένας "γενικός κανόνας" ώστε να δουλέψω πάνω εκεί.

 

Ευχαριστώ για οποιαδήποτε πρόταση.

 

Καλησπέρα σου,

 

Εγώ προσωπικά δεν βασίζομαι ποτέ στο όνομα του αρχείου και την προέκταση του. Όλοι ξέρουμε πόσο εύκολα μπορεί ένα αρχείο να μετονομαστεί. Θα σου πρότεινα να ανοίξεις 2 - 3 Thumbs.db σε ένα Hex Editor, και να δεις τις ομοιότητές τους. Συνήθως τα 3 - 5 πρώτα bytes αναφέρουν και τί τύπου είναι το αρχείο. Δες 2 - 3 εκτελέσιμα αρχεία (*.exe), δες και 2 - 3 Word Documents ή MS Access ή οτιδήποτε. Πάντα σε έναν Hex Editor (πχ Notepad++). Σε όλα, τα πρώτα 3 - 5 πρώτα bytes σου δίνουν μια κατηγοριοποίηση.

 

πχ Τα *.exe αρχεία ξεκινάνε από MZ.

 

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

 

Ευχαριστώ εκ των προτέρων, κι εγώ με τη σειρά μου, για τυγχόν νέες προτάσεις! :-)

Δημοσ.

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

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

 

Αυτό εννοείται! Δεν έχεις λόγο να κάνεις περισσότερα αν δεν έχεις την επιθυμητή προέκταση αρχείου. Αρκεί να μπορείς να τα ξεχωρίσεις από τα παρακάτω που έχουν και αυτά προεκτάσεις *.db :

 

Ansys

ArcView

Synopsys, dbVita, Paradox, Smartware, XTreeGold

dBase IV, dBFast

DIGIBooster

iRiver Plus3

Mozilla Client Certificates or Security Modules

MSWorks

MultiEdit

Palm Zire

Progress Databases

SmartWare Office Pac File

Solid Database

SQL Anywhere

 

reference εδώ

Δημοσ.

Καλή και αυτή η ιδέα θα την μελετήσω, έχω μία επιπλέον πρόταση. Σκεύτικα και εφάρμοσα με μεγάλη επιτυχία τον εξής κανόνα:

1)Μετά την επέκταση που προαναφέραμε

2)ελέγχω εάν το αρχείο είναι το μοναδικό στο φάκελο (έχει να κάνει με την εφαρμογή που φτιάχνω δεν είναι γενικός κανόνας)

3)ελέγχω εάν το αρχείο είναι συστήματος

 

 

Γενικά δεν πρέπει να βγάζει λάθος αποτέλεσμα ο συνδιασμός του 1 και του 3. Περιμένω και την γνώμη σου.

Δημοσ.
Καλή και αυτή η ιδέα θα την μελετήσω, έχω μία επιπλέον πρόταση. Σκεύτικα και εφάρμοσα με μεγάλη επιτυχία τον εξής κανόνα:

1)Μετά την επέκταση που προαναφέραμε

2)ελέγχω εάν το αρχείο είναι το μοναδικό στο φάκελο (έχει να κάνει με την εφαρμογή που φτιάχνω δεν είναι γενικός κανόνας)

3)ελέγχω εάν το αρχείο είναι συστήματος

 

 

Γενικά δεν πρέπει να βγάζει λάθος αποτέλεσμα ο συνδιασμός του 1 και του 3. Περιμένω και την γνώμη σου.

 

Δεν γνωρίζω ποιός είναι ο σκοπός του Project σου για να σου απαντήσω.. Πχ όταν λες "αρχείο συστήματος" τί εννοείς ακριβώς? dll/exe κλπ κλπ?? Υποθετικά μιλώντας βάσει των όσων έχω καταλάβει, αν απλώς θες να δείς, αν το αρχείο ή αρχεία που κάνεις enumerate είναι κάποιας τυπολογίας Α' νομίζω πως καλώς το κάνεις έτσι.

 

Αν πρέπει να βρείς όμως τα αρχεία αυτά και να κάνεις κάποια περαιτέρω επεξεργασία με αυτά τα αρχεία νομίζω πως ίσως θα έπρεπε να βγάλεις τον έλεγχο της προέκτασης στην αρχή. Γιατί πολύ απλά θα σου θέσω το ζήτημα, ότι ένα αρχείο MyLib.DLL εγώ το μετονομάζω σε MyLib.DLΜ. Και είναι critical να επεξεργαστεί. Παύει να είναι DLL?? Ή αν είναι MyProg.exe και το μετονομάζω MyProg.exf, παύει να είναι εκτελέσιμο πρόγραμμα?

 

(επαναλαμβάνω μιλάω υποθετικά & δεν γνωρίζω τη φύση του project σου ...)

Δημοσ.

(επαναλαμβάνω μιλάω υποθετικά & δεν γνωρίζω τη φύση του project σου ...)

 

Θέλω να δω εάν ο φάκελος είναι άδειος. Έχεις δίκιο να υπέθεσες κάτι διαφορετικό. Υπάρχει μία επιλογή στο αρχείο που το κάνεις να είναι κρυφό, εγώ δεν κοιτάζω ακριβώς αυτό, απλά το σύστημα χαρακτηρίζει μερικά αρχεία σαν "Προστατευμένα αρχεία λειτουργικού συστήματος" σε αυτά ανήκουν και τα thumbs γιαυτό δεν εμφανίζονται όταν βάλεις να εμφανίζονται τα κρυφά αρχεία. Εκεί βασίζομαι. Πάντος δουλεύω ήδη την ιδέα σου να ελέγχω της πρώτες εγγραφές του αρχείου.

Δημοσ.
Θέλω να δω εάν ο φάκελος είναι άδειος. Έχεις δίκιο να υπέθεσες κάτι διαφορετικό. Υπάρχει μία επιλογή στο αρχείο που το κάνεις να είναι κρυφό, εγώ δεν κοιτάζω ακριβώς αυτό, απλά το σύστημα χαρακτηρίζει μερικά αρχεία σαν "Προστατευμένα αρχεία λειτουργικού συστήματος" σε αυτά ανήκουν και τα thumbs γιαυτό δεν εμφανίζονται όταν βάλεις να εμφανίζονται τα κρυφά αρχεία. Εκεί βασίζομαι. Πάντος δουλεύω ήδη την ιδέα σου να ελέγχω της πρώτες εγγραφές του αρχείου.

 

Πρώτο και κύριο! Δεν ελέγχεις τις πρώτες εγγραφές αλλά τα πρώτα bytes του αρχείου ....

 

Τώρα που κατάλαβα τί κάνεις,,, σου έχω ένα καλό και ένα κακό νέο ... :-)

 

Το κακό είναι ότι ...

αυτό που περιγράφεις σχετικά με τα προστατευμένα αρχεία του συστήματος ύφίσταται ως σύστημα και ονομάζεται WFP (Windows File Protection). Αυτό σημαίνει οτι το αρχείο που μπαίνει στην διαδικασία "προστασίας" από τα Windows, έχει συγκεκριμένες προδιαγραφές που δεν μπορείς να τις πιάσεις έτσι ... πόσο μάλλον όταν παίζεις με τα file attributes για να καταλάβεις κάτι που κάλλιστα μπορεί να μην ισχύει. Αυτό ισχύει για το άν είναι protected άρα και χαρακτηρισμένο ως system το αρχείο ή όχι. Το κομμάτι που "βλέπει" το τί είδους αρχείο είναι δεν επιρρεάζεται σε καμία περίπτωση μιας και είναι διαφορετική διαδικασία ....

 

 

Το καλό είναι οτι σου βρήκα resources για να μπορέσεις να κάνεις enumerate τα αρχεία αυτά σε όποιο directory και αν ψάχνεις (αν και θεωρούνται undocumented). Το DLL που σε ενδιαφέρει λέγεται sfc_os.dll.

 

Σε αυτό το link σου δείχνει πώς να απενεργοποιήσεις το WFP για κάποιο αρχείο χρησιμοποιώντας την function SetSfcFileException(). Για τα Windows 7 η περιγραφική σελίδα των exported functions του DLL περιγράφονται εδώ. Η function SfcIsFileProtected είναι μάλλον αυτή που σε ενδιαφέρει και υλοποιείται έτσι:

 

>
#include "Sfc.h"
...
// Check whether the file is protected or not.
WCHAR* pProtectedFile = L"C:\\Windows\\system32\\kernel32.dll";
BOOL bProtected = SfcIsFileProtected( NULL, pProtectedFile );
}

 

για να πάρεις μία λίστα με τα system protected files θα μπορούσες να τα κάνεις enumerate έτσι:

 

>
// Get the protected file list - one by one.
PROTECTED_FILE_DATA ProtectedFileInfo = { 0 };
while( SfcGetNextProtectedFile( NULL, &ProtectedFileInfo ))
{
   // Print the filename.
   cout << ProtectedFileInfo.FileName << endl;

 

Σε οποιαδήποτε περίπτωση, μπορείς να βρείς κώδικα στο Internet με παραδείγματα υλοποίησης, για όποια από τις functions θέλεις στο δεύτερο link που σου έστειλα και περιγράφει τις εξαγώμενες αυτές διαδικασίες.

Δημοσ.

Αν το προγραμμα το φτιαχνεις επειδη θες να διαγράφεις αυτά τα "αχρηστα" αρχεια νομιζω υπάρχει ρυθμιση στα windows να μην δημιορυγούνται καν.

Δημοσ.
Αν το προγραμμα το φτιαχνεις επειδη θες να διαγράφεις αυτά τα "αχρηστα" αρχεια νομιζω υπάρχει ρυθμιση στα windows να μην δημιορυγούνται καν.

 

Κι εγώ δεν έχω καταλάβει που αποσκοπεί όλο αυτό, αλλά όπως και να 'χει κάποιο λόγο θα έχει που θέλει αυτή τη πληροφορία ...

 

Φαντάζομαι πως ο χρήστης lefi θα μας διαφωτίσει (αν επιτρέπεται), ώστε να δούμε κατα πόσο όλο αυτό είναι η μόνη διέξοδος ή υπάρχουν και πολύ πιο εύκολες από το να μπαίνει σε τόσο "επικίνδυνα" νερά και πόσο μάλλον χρησιμοποιώντας VB 2005! ...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...