È possibile determinare quando è stata creata una partizione NTFS?


16

Abbiamo un client in cui sarebbe molto utile determinare QUANDO un'unità è stata inizializzata o creata una partizione NTFS. C'è un valore di data e ora da qualche parte? Se qualcuno potesse perdere qualche consiglio sarebbe molto apprezzato.

Grazie!

-slashp


Solo un'idea ma potresti invertire il calcolo del volume UUID per ottenere una data / ora? (Non so come sia generato l'UUID, quindi ci vorrebbe qualche ricerca per scoprirlo e potrebbe non essere affatto possibile.)
Chris Nava,

1
@ChrisNava: l'ID univoco utilizzato in NTFS non è un UUID a 128 bit ma un numero casuale a 64 bit. (Inoltre, sistemi moderni non generano tipo 1 UUID basati sul tempo o, tipo 4 UUID casuali basati sono preferiti per la privacy Se. Fosse un tipo 1 UUID, però, quindi non ci sarebbe alcuna calcolo invertire, il timestamp è memorizzato in
bella

Risposte:


17

Sì. Puoi persino farlo su una LAN.

La transazione CIFS è TRANS2_QFSINFOe il livello di informazione è SMB_QUERY_FS_VOLUME_INFO. La funzione API nativa di Windows NT per l'interrogazione del tempo di creazione di un volume è ZwQueryVolumeInformationFile(), che produce una FILE_FS_VOLUME_INFORMATIONstruttura di dati (quasi identica a quella CIFS, nota) quando viene richiesta la FileFsVolumeInformationclasse di informazioni. Il test del funzionamento di questa query fa parte del tester IFS fornito da Microsoft agli sviluppatori di driver.

È interessante notare che nessuno sembra aver scritto un'utilità utile che richiede solo un volume e stampa il timestamp di creazione in forma leggibile dall'uomo. 1 Il più vicino che puoi raggiungere, per quanto posso dire, è di avviare lo procmonstrumento di SysInternals e cercare le query di informazioni sul volume in streaming. Forse qualcuno che legge questo sarà ispirato a creare un volcomando avanzato .

Sì, il timestamp di creazione del volume è inizializzato correttamente e non è solo impostato su zero o su qualche altra costante. Non ho controllato, ma la mia ipotesi plausibile sulla posizione di archiviazione di queste informazioni è l' $STANDARD_INFORMATIONattributo della $Volumevoce MFT. Posso pensare ad altri tre posti possibili, ma quello è il più logico.


1grawity 's utilità solo bisogno di un po' più lucido, tra cui semplici utilizzi di FileTimeToSystemTime()e GetTimeFormat(), per renderlo utilizzabile per gli utenti finali che non può decodificare Win32 timestamp nelle loro teste. ☺


Caspita, ti do un +1 per questa risposta perché era esattamente quello che stavo cercando. Sfortunatamente, non sono un programmatore di API Win32 con conoscenza degli interni del sistema e cercavo una soluzione rapida. Buona idea con il procmon. Grazie comunque!!!
taglio

7
Qualcosa di simile a questo ? (brutto avvertimento sul codice)
user1686

8

Non esiste una "data di creazione del volume" che conosco integrata in NTFS. Tuttavia, dovresti essere in grado di approssimare la data di creazione abbastanza da vicino osservando la data di creazione della System Volume Informationdirectory nella radice del volume.


2
Questo mi dà un'ottima approssimazione. Grazie per la tua rapida risposta! Ora so a chi dare la colpa per l'unità non inclusa nei nostri backup :).
taglio

0

Questo è esposto da qualche parte. Se si avvia un CD di Windows XP e si accede alla console di ripristino, la versione di chkdsk stampa la data di creazione del volume al termine dell'esecuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.