Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизМониторинг работы с файлами... Найти похожие ветки
← →
Makhanev A.S. (2005-07-21 11:42) [0]Нужно мониторить операции юзера с файлами: open, delete, rename, copy, move...
Причем, операции, производимые только непосредственно через Explorer, а также, корректно сечь работу на шарах, сечь не конкретную директорию, а действия юзера на всем винте/шарах.
Смотрел кучу компонент на torry, у всех есть явные недостатки (основной - мониторинг конкретной папки, а не всего диска).
Те же, что мониторят весь диск дают много лишне инфы, т.к. драйвера ловят все операции на диске, произмодимые всеми программами.
Вобщем интересуют любые компоненты/совету и предложения за вменяемую цену.
← →
Kolan © (2005-07-21 14:53) [1]
> дают много лишне инфы
Ну и что?
← →
AlexKniga © (2005-07-21 15:00) [2]Если интересует тока Проводник Окон, то проще самому написать.
Вот пример Hook"а на копирование:unit UHook;
interface
uses
ShlObj, ComObj, Windows;
const
CLSID_WEHook: TGUID="{9C123760-65F8-11D2-AEF9-444553540000}";
type
TWEHook=class(TComObject, ICopyHook)
public
function CopyCallback(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar;
dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT; stdcall;
end;
implementation
uses
Dialogs, Forms, ShellAPI, SysUtils, ComServ;
type
TWEHookFactory=class(TComObjectFactory)
public
procedure UpdateRegistry(Register: Boolean); override;
end;
function TWEHook.CopyCallback(Wnd: HWND; wFunc, wFlags: UINT; pszSrcFile: PAnsiChar;
dwSrcAttribs: DWORD; pszDestFile: PAnsiChar; dwDestAttribs: DWORD): UINT;
var
Msg:string;
begin
Application.Handle:=Wnd;
Msg:="";
case wFunc of
FO_COPY: Msg:=Format("Действительно ли Вы хотите копировать директорию %s в %s?", [pszSrcFile,pszDestFile]);
FO_DELETE: Msg:=Format("Действительно ли Вы хотите удалить директорию %s?", [pszSrcFile]);
FO_MOVE: Msg:=Format("Действительно ли Вы хотите переместить директорию %s в %s?", [pszSrcFile,pszDestFile]);
FO_RENAME: Msg:=Format("Действительно ли Вы хотите назвать директорию %s именем %s?", [pszSrcFile,pszDestFile]);
end;
if length(Msg)>0
then
Result:=MessageDlg(Msg, mtConfirmation, [mbYes,mbNo,mbCancel], 0)
else
Result:=id_Yes;
end;
procedure TWEHookFactory.UpdateRegistry(Register: Boolean);
begin
if Register then begin
CreateRegKey("Directory\shellex\CopyHookHandlers\WEHook", "", GUIDToString(CLSID_WEHook));
CreateRegKey("CLSID\"+GUIDToString(CLSID_WEHook)+"\InprocServer32", "ThreadingModel", "Apartment");
inherited UpdateRegistry(Register);
end else begin
DeleteRegKey("Directory\shellex\CopyHookHandlers\WEHook");
inherited UpdateRegistry (Register);
end;
end;
initialization
TWEHookFactory.Create(ComServer, TWEHook, CLSID_WEHook, "WEHook", "WE Folder Test Hook", ciMultiInstance);
end.
← →
jack128 © (2005-07-21 15:32) [3]и если я из своей программы вызову ShFileOperation то этот хук не сработает??
← →
oldman © (2005-07-21 16:33) [4]
> Нужно мониторить операции юзера с файлами: open, delete,
> rename, copy, move...
Поставь рядом с юзером соглядатая...
Зачем это вообще нужно?
← →
AlexKniga © (2005-07-21 17:09) [5]jack128
Сработает. На CopyFile не сработает.
← →
Makhanev A.S. (2005-07-22 14:21) [6]
> Kolan © (21.07.05 14:53) [1]
>
> > дают много лишне инфы
>
> Ну и что?
Это я про Alfa File Monitor. Он ловит только close и не отображал юзера, зато кидал кучу другой инфы.
И при всем этом стоит $2000.
Может кто его юзал? (вдруг мы неправильно его прикручивали)
> AlexKniga © (21.07.05 15:00) [2]
Спасибо, изучаем.
> oldman © (21.07.05 16:33) [4]
>
> > Нужно мониторить операции юзера с файлами: open, delete,
>
> > rename, copy, move...
>
> Поставь рядом с юзером соглядатая...
> Зачем это вообще нужно?
Не знаю, клиент попросил такую вот фичу.
Скорее всего она ему нужна для усиления corporate security, но я не уверен.
← →
Оран Гутангович (2005-07-23 02:20) [7]Filemon
Есть исходники
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c