Нужен пример кода или, хотя бы, идея каким образом можно фиксировать действия пользователя в системе. Что-то типа:
* 10:00 user Иванов вошел в систему
* 10:15 user Иванов запустил MS Word
* 10:30 ...
* 18:00 user Иванов вышел из системы
Заранее благодарен.
01.11.03 14:40: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, ogrushenkov, Вы писали:
O>Нужен пример кода или, хотя бы, идея каким образом можно фиксировать действия пользователя в системе. Что-то типа:
O>* 10:00 user Иванов вошел в систему
O>* 10:15 user Иванов запустил MS Word
O>* 10:30 ...
O>* 18:00 user Иванов вышел из системы
O>Заранее благодарен.
Ну давай думать
ИДИОТКИЕ СПОСОБЫ:
Тебе нужен log on/log off.
1) приложение в автозапуске всех пользователей
2) переписывание GINA DLL (функции wlx***)
Тебе нужен запуск процесса.
Если речь идёт о логе действий пользователя, то перехвата CreateProcess/ShellExecure будет достаточно.
Можно так же перехватывать все открытия/закрытия файла (см FileMon на
www.sysinternals.com). Это ИМХО более надёжно.
НОРМАЛЬНЫЙ СПОСОБ:
Пойти и включить аудит на всё что нужно. NTFS + Event Log рулит
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, ogrushenkov, Вы писали:
O>>Нужен пример кода или, хотя бы, идея каким образом можно фиксировать действия пользователя в системе. Что-то типа:
O>>* 10:00 user Иванов вошел в систему
O>>* 10:15 user Иванов запустил MS Word
O>>* 10:30 ...
O>>* 18:00 user Иванов вышел из системы
O>>Заранее благодарен.
A>Ну давай думать
A>ИДИОТКИЕ СПОСОБЫ:
A>Тебе нужен log on/log off.
A>1) приложение в автозапуске всех пользователей
A>2) переписывание GINA DLL (функции wlx***)
A>Тебе нужен запуск процесса.
A>Если речь идёт о логе действий пользователя, то перехвата CreateProcess/ShellExecure будет достаточно.
A>Можно так же перехватывать все открытия/закрытия файла (см FileMon на www.sysinternals.com). Это ИМХО более надёжно.
A>НОРМАЛЬНЫЙ СПОСОБ:
A>Пойти и включить аудит на всё что нужно. NTFS + Event Log рулит
Спасибо! Про аудит-то я забыл совсем. Это как раз то, что надо.
Hello, "adontz"
>
> Ну давай думать
>
> ИДИОТКИЕ СПОСОБЫ:
>
> Тебе нужен log on/log off.
> 1) приложение в автозапуске всех пользователей
> 2) переписывание GINA DLL (функции wlx***)
>
> Тебе нужен запуск процесса.
> Если речь идёт о логе действий пользователя, то перехвата CreateProcess/ShellExecure будет достаточно.
> Можно так же перехватывать все открытия/закрытия файла (см FileMon на www.sysinternals.com). Это ИМХО более надёжно.
>
А может простейший WMI скрипт?
The code example in this section runs a script when a process that is running Microsoft Word ends.
To use the code example
1.. Create the c:\asec2.vbs, and then copy the script in this section into it.
2.. Copy the MOF list into a text file and save it with a .mof extension.
3.. In a command window, compile the MOF file by using the following command:
Mofcomp filename.mof
4.. Open a WinWord process, wait more than 5 seconds, close it, and then look in C:\ directory where there should be a file named ASEC.log that contains content similar to the following:
Time: 12/31/2002 2:56:33 PM; Entry made by: ASEC Application closed. UserModeTime: 1562500; KernelModeTime: 3125000 [hundreds of nanoseconds]
Dim objFS, objFile
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.OpenTextFile("C:\ASEC2.log", 8, true)
objFile.WriteLine "Time: " & Now & "; Entry made by: ASEC2"
'Note the usage of TargetEvent object. It is an __InstanceDeletionEvent instance
' so it has a property named TargetInstance, which is a Win32_Process instance
' used to fire the event. Win32_Process class has two properties called "UserModeTime" and
' "KernelModeTime" and this is to put in the log file created by the script.
objFile.WriteLine "Application closed. UserModeTime: " & TargetEvent.TargetInstance.UserModeTime &_
"; KernelModeTime: " & TargetEvent.TargetInstance.KernelModeTime & " [hundreds of nanoseconds]"
objFile.Close
The code example in this section is the MOF file that calls the earlier script when an event is received.
#pragma namespace ("\\\\.\\root\\subscription")
instance of ActiveScriptEventConsumer as $Cons
{
Name = "ASEC";
ScriptingEngine = "VBScript";
ScriptFileName = "c:\\asec2.vbs";
};
instance of __EventFilter as $Filt
{
Name = "EF";
Query = "SELECT * FROM __InstanceDeletionEvent WITHIN 5 "
"WHERE TargetInstance ISA \"Win32_Process\" "
"AND TargetInstance.Name = \"winword.exe\"";
QueryLanguage = "WQL";
EventNamespace = "root\\cimv2";
};
instance of __FilterToConsumerBinding
{
Filter = $Filt;
Consumer = $Cons;
};
Posted via RSDN NNTP Server 1.8 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>А может простейший WMI скрипт?
Open a WinWord process, wait more than 5 seconds,
Это не есть хорошо.
Hello, "adontz"
>
> TK>А может простейший WMI скрипт?
>
> > Open a WinWord process, wait more than 5 seconds,
>
> Это не есть хорошо.
Это есть просто и в большинстве более чем случаев достаточно.
Posted via RSDN NNTP Server 1.8 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.