Kann festgestellt werden, wann eine NTFS-Partition erstellt wurde?

16

Wir haben einen Client, bei dem es sehr nützlich wäre festzustellen, WANN ein Laufwerk initialisiert oder eine NTFS-Partition erstellt wurde. Gibt es irgendwo einen Zeitstempelwert? Wenn jemand einen Rat abgeben könnte, wäre er sehr dankbar.

Vielen Dank!

-Slashp

Schrägstrich
quelle
Nur eine Idee, aber könnten Sie die Volumen-UUID-Berechnung umkehren, um ein Datum / eine Uhrzeit zu erhalten? (Ich weiß nicht, wie die UUID generiert wird, daher sind einige Nachforschungen erforderlich, um dies herauszufinden. Möglicherweise ist dies überhaupt nicht möglich.)
Chris Nava
1
@ChrisNava: Die in NTFS verwendete eindeutige ID ist keine 128-Bit-UUID, sondern eine zufällige 64-Bit-Zahl. (Außerdem generieren moderne Systeme auch keine zeitbasierten UUIDs des Typs 1; aus Datenschutzgründen werden zufallsbasierte UUIDs des Typs 4 bevorzugt. Wenn es sich jedoch um eine UUID des Typs 1 handeln würde, wäre keine Umkehrberechnung erforderlich. Der Zeitstempel lautet in Sichtweite gespeichert.)
user1686

Antworten:

17

Ja. Sie können dies sogar über ein LAN tun.

Die CIFS-Transaktion ist TRANS2_QFSINFOund die Informationsebene ist SMB_QUERY_FS_VOLUME_INFO. Die systemeigene Windows NT-API-Funktion zum Abfragen der Erstellungszeit eines Volumes lautet ZwQueryVolumeInformationFile(): aFILE_FS_VOLUME_INFORMATION Datenstruktur (fast identisch mit der CIFS-Datenstruktur, Anmerkung), wenn Sie nach FileFsVolumeInformationder Informationsklasse gefragt werden . Das Testen, ob diese Abfrage funktioniert, ist Teil des IFS-Testers, den Microsoft für Treiberentwickler bereitstellt.

Interessanterweise scheint niemand ein praktisches Dienstprogramm geschrieben zu haben, das nur ein Volume abfragt und dessen Erstellungszeitstempel in lesbarer Form druckt. 1 Der nächste Schritt, den Sie nach meinem besten Wissen unternehmen werden, besteht darin, das SysInternals- procmonTool aufzurufen und nach den Volume-Informationsabfragen zu suchen, von denen Sie Daten streamen. Vielleicht wird jemand, der dies liest, dazu inspiriert, einen erweiterten volBefehl zu erstellen .

Ja, der Zeitstempel für die Volume-Erstellung ist ordnungsgemäß initialisiert und wird nicht nur auf Null oder eine andere Konstante gesetzt. Ich habe nicht geprüft, aber meine Vermutung, wo diese Informationen gespeichert werden, ist das $STANDARD_INFORMATIONAttribut von$Volume MFT-Eintrags. Ich kann mir drei andere mögliche Orte vorstellen, aber das ist der logischste.


grawityDas Dienstprogramm von 1 benötigt nur ein wenig mehr Polnisch, einschließlich der einfachen Verwendung von FileTimeToSystemTime()und GetTimeFormat(), um es für Endbenutzer nutzbar zu machen, die keine Win32-Zeitstempel in ihren Köpfen dekodieren können. ☺

JdeBP
quelle
Wow, ich gebe dir +1 für diese Antwort, weil es genau das war, wonach ich gesucht habe. Leider bin ich kein Win32-API-Programmierer mit Kenntnissen der Systeminternen und habe nach einer schnellen Lösung gesucht. Guter Gedanke mit dem Prokmon. Trotzdem danke!!!
Slashp
7
So etwas wie diese ? (Warnung vor hässlichem Code)
user1686
8

Es gibt kein "Volume-Erstellungsdatum", von dem ich weiß, dass es in NTFS integriert ist. Sie sollten jedoch in der Lage sein, das Erstellungsdatum ziemlich genau zu bestimmen, indem Sie das Erstellungsdatum des System Volume InformationVerzeichnisses im Stammverzeichnis des Volumes betrachten.

Andrew Lambert
quelle
2
Dies gibt mir eine sehr gute Annäherung. Vielen Dank für Ihre schnelle Antwort! Jetzt weiß ich, wer die Schuld daran hat, dass das Laufwerk nicht in unseren Backups enthalten ist :).
Slashp
0

Dies ist irgendwo ausgesetzt. Wenn Sie eine Windows XP-CD starten und auf die Wiederherstellungskonsole zugreifen, druckt die dortige Version von chkdsk das Erstellungsdatum des Volumes aus, nachdem die Ausführung abgeschlossen ist.

Aaron
quelle