Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Доступ - Определение даты создания лок.уч.записи

Ответить
Настройки темы
Доступ - Определение даты создания лок.уч.записи

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Господа! Как определить дату/время локальной учетной записи. Именно локальной, а не глобальной. Дата создания папки профиля пользователя не подходит, он мог зайти позже.....Вот такая задачка!

Отправлено: 16:28, 10-10-2007

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Локальные учетные записи хранятся в базе SAM, которая в свою очередь хранится в реестре поэтому логично предположить что дата создания пользователя должна соответствовать дате создания ключа "HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\UserName". Это можно организовать через API-функции... если устроит, могу привести скрипт на AutoIT.

З.Ы. ИМХО проще не забывать включать штатные средства аудита.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:00, 11-10-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Версия очень интересная!!! Обязательно посмотрю ветку. А если учетка удаляется, то и запись в реестре тоже соотвественно удаляется? За скрипт на AutoIT был бы признателен!!!

Отправлено: 15:39, 11-10-2007 | #3


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Mukovar:
если учетка удаляется, то и запись в реестре тоже соотвественно удаляется? »
логично
Цитата Mukovar:
За скрипт на AutoIT был бы признателен »
Код: Выделить весь код
$UserName = $CmdLine[$CmdLine[0]]
$sRegKey = 'SAM\SAM\Domains\Account\Users\Names\' & $UserName
MsgBox(64,'Дата создания учетной записи', RegGetTimeStamp(0x80000002, $sRegKey))

Func RegGetTimeStamp($iRegHive, $sRegKey)
    Local $sRes='', $aRet, $hReg = DllStructCreate("int")
    Local $FILETIME = DllStructCreate("dword;dword")
    Local $SYSTEMTIME1 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    Local $SYSTEMTIME2 = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    Local $hAdvAPI=DllOpen('advapi32.dll'), $hKernel=DllOpen('kernel32.dll')
    If $hAdvAPI=-1 Or $hKernel=-1 Then Return SetError(1, $aRet[0], 'DLL Open Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegOpenKeyEx", _
        "int", $iRegHive, "str", $sRegKey, _
        "int", 0, "int", 0x20019, _
        "ptr", DllStructGetPtr($hReg))
    If $aRet[0] Then Return SetError(2, $aRet[0], 'Registry Key Open Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegQueryInfoKey", _
        "int", DllStructGetData($hReg,1), _
        "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, "ptr", 0, _
        "ptr", DllStructGetPtr($FILETIME))
    If $aRet[0] Then Return SetError(3, $aRet[0], 'Registry Key Query Error!')
    $aRet = DllCall("advapi32.dll", "int", "RegCloseKey", _
        "int", DllStructGetData($hReg,1))
    If $aRet[0] Then Return SetError(4, $aRet[0], 'Registry Key Close Error!')
    $aRet = DllCall("kernel32.dll", "int", "FileTimeToSystemTime", _
        "ptr", DllStructGetPtr($FILETIME), _
        "ptr", DllStructGetPtr($SYSTEMTIME1))
    If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!')
    $aRet = DllCall("kernel32.dll", "int", "SystemTimeToTzSpecificLocalTime", _
        "ptr", 0, _
        "ptr", DllStructGetPtr($SYSTEMTIME1), _
        "ptr", DllStructGetPtr($SYSTEMTIME2))
    If $aRet[0]=0 Then Return SetError(5, 0, 'Time Convert Error!')
    $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,4)) &'.'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,2)) &'.'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,1)) &' '
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,5)) &':'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,6)) &':'
     $sRes &= StringFormat("%.2d",DllStructGetData($SYSTEMTIME2,7))
    Return $sRes
EndFunc
Запускать нужно с системной учетной записью, например при помощи PsExec, командная строка для скомпилированного скрипта:
Код: Выделить весь код
psexec.exe -s -i script.exe UserName
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:33, 12-10-2007 | #4



Компьютерный форум OSzone.net » Клиентские ОС Microsoft » Microsoft Windows 2000/XP » Доступ - Определение даты создания лок.уч.записи

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] После создания учетной записи с правами пользователь пропал апплет sysdm.cpl amillo Проект WinStyle 11 20-09-2009 17:40
Установка приложений после создания учетной записи (первый запуск раб\стола) Husky Автоматическая установка приложений 1 09-09-2009 14:49
Русскоязычная программа для записи файлов, а также создания DVD-Video и SVCD Dabaduch Хочу все знать 4 23-01-2009 20:29
проблема создания учетной записи в windows 2003 одиссей Microsoft Windows NT/2000/2003 8 24-07-2006 10:15
Дата создания учетной записи Igorek Сетевые технологии 2 31-03-2004 14:00




 
Переход