Czy można ustalić, kiedy utworzono partycję NTFS?

16

Mamy klienta, w którym bardzo przydatne byłoby określenie, GDY dysk został zainicjowany lub utworzono partycję NTFS. Czy gdzieś jest wartość znacznika czasu? Byłoby bardzo mile widziane, gdyby ktokolwiek mógł przekazać jakąkolwiek radę.

Dzięki!

-slashp

slashp
źródło
Pomysł, ale czy możesz odwrócić obliczenia UUID woluminu, aby uzyskać datę / godzinę? (Nie wiem, w jaki sposób generowany jest UUID, więc znalezienie go zajęłoby trochę badań i może nie być w ogóle możliwe).
Chris Nava
1
@ChrisNava: Unikalnym identyfikatorem używanym w NTFS nie jest 128-bitowy UUID, ale losowa liczba 64-bitowa. (Poza tym nowoczesne systemy również nie generują UUID opartych na czasie typu 1; losowe UUID typu 4 są preferowane ze względu na prywatność. Gdyby jednak był to UUID typu 1, wówczas nie byłoby żadnych obliczeń do odwrócenia; znacznik czasu jest przechowywane na widoku.)
1686

Odpowiedzi:

17

Tak. Możesz to zrobić nawet przez sieć LAN.

Transakcja CIFS jest, TRANS2_QFSINFOa poziom informacji wynosi SMB_QUERY_FS_VOLUME_INFO. Natywny Windows NT funkcja API dla zapytań czas tworzenia woluminu jest ZwQueryVolumeInformationFile(), co daje FILE_FS_VOLUME_INFORMATIONstrukturę danych (niemal identyczny do tego CIFS, uwaga), gdy poprosił o FileFsVolumeInformationklasie informacji. Testowanie działania tego zapytania jest częścią testera IFS, który Microsoft dostarcza programistom sterowników.

Co ciekawe, nikt nie napisał przydatnego narzędzia, które po prostu odpytuje wolumin i drukuje znacznik czasu jego utworzenia w czytelnej dla człowieka formie. 1 Najbliżej, o ile mi wiadomo, jest zwiększenie procmonnarzędzia SysInternals i poszukiwanie zapytań o informacje o wolumenie przesyłane strumieniowo. Być może ktoś, kto to czyta, zostanie zainspirowany do stworzenia ulepszonego volpolecenia.

Tak, znacznik czasu tworzenia woluminu jest poprawnie inicjowany i nie jest ustawiony tylko na zero lub inną stałą. Nie sprawdziłem, ale moje wyuczone przypuszczenie, że miejscem przechowywania tych informacji jest $STANDARD_INFORMATIONatrybut pozycji $VolumeMFT. Mogę wymyślić trzy inne możliwe miejsca, ale to jest najbardziej logiczne.


1grawity „s narzędzie po prostu potrzebuje trochę więcej polskiego, w tym prostych zastosowań FileTimeToSystemTime()i GetTimeFormat(), aby to użyteczny dla użytkowników końcowych, że nie potrafi dekodować Win32 znaczników czasu w głowach. ☺

JdeBP
źródło
Wow, daję +1 za tę odpowiedź, ponieważ dokładnie tego szukałem. Niestety nie jestem programistą Win32 API ze znajomością wewnętrznych elementów systemu i szukałem szybkiego rozwiązania. Dobra myśl z zaleceniem. W każdym razie dzięki!!!
slashp
7
Coś w tym stylu ? (brzydkie ostrzeżenie o kodzie)
1686
8

Nie ma „daty utworzenia woluminu”, którą znam z wbudowanego w NTFS. Powinieneś być jednak w stanie dość dokładnie przybliżyć datę utworzenia, patrząc na datę utworzenia System Volume Informationkatalogu w katalogu głównym woluminu.

Andrew Lambert
źródło
2
To daje mi bardzo dobre przybliżenie. Dziękuję za szybką odpowiedź! Teraz wiem, kogo winić za to, że dysk nie został uwzględniony w naszych kopiach zapasowych :).
slashp
0

Jest to gdzieś odsłonięte. Jeśli uruchomisz dysk CD z systemem Windows XP i uzyskasz dostęp do konsoli odzyskiwania, wersja programu chkdsk wydrukuje datę utworzenia woluminu po jego zakończeniu.

Aaron
źródło