Назад | Перейти на главную страницу

Даты изменения профиля пользователя не совпадают ... в чем разница?

Этот вопрос возник, когда я исследовал сервер, который случайно перезапустился прошлой ночью. Я просматривал журналы событий, чтобы увидеть, не перезапустил ли кто-нибудь систему вручную, но ничего не обнаружил.

я пошел в C: \ Пользователи и не было ни одного профиля, у которого была бы дата изменения за пару лет. Когда пошел в Профили пользователей посредством Свойства системы window, я обнаружил, что несколько учетных записей вошли в систему совсем недавно. Те же имена соответствуют C: \ Пользователи, но даты изменения не совпадают. Почему это?

Поскольку дата изменения папки профиля полностью отделена от даты изменения файлов внутри нее и даты изменения профиля папка не обязательно имеет какое-либо отношение к модификации фактического профиля пользователя.

Дата изменения профиля пользователя определяется по-разному, в зависимости от того, какая у вас версия Windows.

В Windows 2000, XP и Server 2003 это делается путем проверки даты изменения на NTUSER.DAT файл внутри корневой папки каждого конкретного пользователя. Как указывает ваш комментарий ниже, это не особенно точно, поскольку этот файл может быть изменен системными процессами, службами и т. Д. И может не быть хорошим индикатором того, когда пользователь последний раз входил в систему.

В Server 2008 / Vista и новее это делается с помощью WMI, в частности LastUseTime собственность Win32_UserProfile класс. Именно отсюда окно свойств системы получает информацию, и вы тоже можете сделать это через командную строку. Опять же, это связано с тем, что дата изменения папки профиля пользователя вовсе не обязательно коррелирует с изменениями самого профиля пользователя. Я мог бы, например, переименовать папку профиля пользователя, изменить отметку даты и т. Д., Фактически не внося никаких изменений в сам профиль, и аналогичным образом я мог бы изменить профиль, не меняя ничего о папке, в которой он находится.


И, конечно же, это запрос, который вы можете запустить вручную. Например, в PowerShell это будет выглядеть так:

gwmi win32_userprofile

Это перечислит все профили пользователей на машине и включит все атрибуты. Если вас волнует только то, что LastUseTime, тогда вы бы сделали:

gwmi win32_userprofile | select localpath, lastusetime

Перечисляет все профили пользователей, но только локальный путь (чтобы вы могли определить, какому пользователю принадлежит профиль) и интересующий вас атрибут.