Вопрос такой: мне нужно вести лог всех запросов с компа и записывать их в файл. Что-то мне подсказывает что это можно сделать с помощью функции PfMakeLog из IPHLPAPI. Но я не знаю как ею пользоватся. Кто знает как можно реадизовать это?
Логсетевой активности
Автор chainyk, 03.07.2005, 10:31
#3
Отправлено 04.07.2005, 10:25:12
Я имел в виду сетевые запросы,
я создаю интерфейс с помощью функции PfCreateInterface (из того же IPHLPAPI), в этой функции есть такой параметр - bUseLog, который я задаю в true. Далее нужно создать лог, как мне кажется при помощи функции pfmakelog, а вот что делать дальше не знаю, как получить информацию из этого лога?
я создаю интерфейс с помощью функции PfCreateInterface (из того же IPHLPAPI), в этой функции есть такой параметр - bUseLog, который я задаю в true. Далее нужно создать лог, как мне кажется при помощи функции pfmakelog, а вот что делать дальше не знаю, как получить информацию из этого лога?
Сообщение отредактировал chainyk: 04.07.2005, 10:26:22
#5
Отправлено 06.07.2005, 16:54:47
Если тебя интересует доступ к твоим файлам по локалке, взгляни на этот код.
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, NetApi; type TMonitorForm = class(TForm) lwResources: TListView; bnShow: TButton; bnKill: TButton; procedure bnShowClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure bnKillClick(Sender: TObject); private { Private declarations } bNT:Boolean; fHandleNT, fHandle9x : THandle; public { Public declarations } end; var MonitorForm: TMonitorForm; implementation {$R *.dfm} procedure TMonitorForm.bnShowClick(Sender: TObject); var FileInfoNT: PFileInfo3Array; FileInfo9x: array [0..1024] of TFileInfo502; i, iTE, iRE: Integer; begin lwResources.Items.Clear; if bNT then begin // для NT FileInfoNT := nil; if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @iRE, @iTE, nil)<>0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfoNT^[i].fi3_id)); SubItems.Add(FileInfoNT^[i].fi3_pathname); SubItems.Add(FileInfoNT^[i].fi3_username); SubItems.Add(IntToStr(FileInfoNT^[i].fi3_num_locks)); end; end; end else begin // для Windows 9x if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @iRE, @iTE)<> 0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfo9x[i].fi502_id)); SubItems.Add(FileInfo9x[i].fi502_pathname); SubItems.Add(FileInfo9x[i].fi502_username); end; end; end; end; procedure TMonitorForm.FormShow(Sender: TObject); var ver: TOSVersionInfo; begin ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(Ver); case Ver.dwPlatformId of VER_PLATFORM_WIN32_NT : bNT := True; VER_PLATFORM_WIN32_WINDOWS : bNT := False; VER_PLATFORM_WIN32s : bNT := False end; if bNT then begin fHandleNT := LoadLibrary('NETAPI32.DLL'); @NetFileEnumNT := GetProcAddress(fHandleNT, 'NetFileEnum'); @NetFileCloseNT := GetProcAddress(fHandleNT, 'NetSessionClose'); end else begin fHandle9x := LoadLibrary('SVRAPI.DLL'); @NetFileEnum := GetProcAddress(fHandle9x, 'NetFileEnum'); @NetFileClose := GetProcAddress(fHandle9x, 'NetFileClose2'); end; end; procedure TMonitorForm.bnKillClick(Sender: TObject); begin if lwResources.Selected=nil then exit; if bNT then NetFileCloseNT(nil,StrToInt(lwResources.Selected.Caption)) else NetFileClose(nil,StrToInt(lwResources.Selected.Caption)); end; end.
Сообщение отредактировал fantomas: 06.07.2005, 16:56:19
#6
Отправлено 07.07.2005, 14:15:45
Ну это не вовсем то что надо, но тоже пригодилось.Если тебя интересует доступ к твоим файлам по локалке, взгляни на этот код.
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, NetApi; type TMonitorForm = class(TForm) lwResources: TListView; bnShow: TButton; bnKill: TButton; procedure bnShowClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure bnKillClick(Sender: TObject); private { Private declarations } bNT:Boolean; fHandleNT, fHandle9x : THandle; public { Public declarations } end; var MonitorForm: TMonitorForm; implementation {$R *.dfm} procedure TMonitorForm.bnShowClick(Sender: TObject); var FileInfoNT: PFileInfo3Array; FileInfo9x: array [0..1024] of TFileInfo502; i, iTE, iRE: Integer; begin lwResources.Items.Clear; if bNT then begin // для NT FileInfoNT := nil; if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @iRE, @iTE, nil)<>0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfoNT^[i].fi3_id)); SubItems.Add(FileInfoNT^[i].fi3_pathname); SubItems.Add(FileInfoNT^[i].fi3_username); SubItems.Add(IntToStr(FileInfoNT^[i].fi3_num_locks)); end; end; end else begin // для Windows 9x if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @iRE, @iTE)<> 0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfo9x[i].fi502_id)); SubItems.Add(FileInfo9x[i].fi502_pathname); SubItems.Add(FileInfo9x[i].fi502_username); end; end; end; end; procedure TMonitorForm.FormShow(Sender: TObject); var ver: TOSVersionInfo; begin ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(Ver); case Ver.dwPlatformId of VER_PLATFORM_WIN32_NT : bNT := True; VER_PLATFORM_WIN32_WINDOWS : bNT := False; VER_PLATFORM_WIN32s : bNT := False end; if bNT then begin fHandleNT := LoadLibrary('NETAPI32.DLL'); @NetFileEnumNT := GetProcAddress(fHandleNT, 'NetFileEnum'); @NetFileCloseNT := GetProcAddress(fHandleNT, 'NetSessionClose'); end else begin fHandle9x := LoadLibrary('SVRAPI.DLL'); @NetFileEnum := GetProcAddress(fHandle9x, 'NetFileEnum'); @NetFileClose := GetProcAddress(fHandle9x, 'NetFileClose2'); end; end; procedure TMonitorForm.bnKillClick(Sender: TObject); begin if lwResources.Selected=nil then exit; if bNT then NetFileCloseNT(nil,StrToInt(lwResources.Selected.Caption)) else NetFileClose(nil,StrToInt(lwResources.Selected.Caption)); end; end.
#7
Отправлено 07.07.2005, 15:20:58
Очень рад...Ну это не вовсем то что надо, но тоже пригодилось.Если тебя интересует доступ к твоим файлам по локалке, взгляни на этот код.
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, NetApi; type TMonitorForm = class(TForm) lwResources: TListView; bnShow: TButton; bnKill: TButton; procedure bnShowClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure bnKillClick(Sender: TObject); private { Private declarations } bNT:Boolean; fHandleNT, fHandle9x : THandle; public { Public declarations } end; var MonitorForm: TMonitorForm; implementation {$R *.dfm} procedure TMonitorForm.bnShowClick(Sender: TObject); var FileInfoNT: PFileInfo3Array; FileInfo9x: array [0..1024] of TFileInfo502; i, iTE, iRE: Integer; begin lwResources.Items.Clear; if bNT then begin // для NT FileInfoNT := nil; if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @iRE, @iTE, nil)<>0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfoNT^[i].fi3_id)); SubItems.Add(FileInfoNT^[i].fi3_pathname); SubItems.Add(FileInfoNT^[i].fi3_username); SubItems.Add(IntToStr(FileInfoNT^[i].fi3_num_locks)); end; end; end else begin // для Windows 9x if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @iRE, @iTE)<> 0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfo9x[i].fi502_id)); SubItems.Add(FileInfo9x[i].fi502_pathname); SubItems.Add(FileInfo9x[i].fi502_username); end; end; end; end; procedure TMonitorForm.FormShow(Sender: TObject); var ver: TOSVersionInfo; begin ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(Ver); case Ver.dwPlatformId of VER_PLATFORM_WIN32_NT : bNT := True; VER_PLATFORM_WIN32_WINDOWS : bNT := False; VER_PLATFORM_WIN32s : bNT := False end; if bNT then begin fHandleNT := LoadLibrary('NETAPI32.DLL'); @NetFileEnumNT := GetProcAddress(fHandleNT, 'NetFileEnum'); @NetFileCloseNT := GetProcAddress(fHandleNT, 'NetSessionClose'); end else begin fHandle9x := LoadLibrary('SVRAPI.DLL'); @NetFileEnum := GetProcAddress(fHandle9x, 'NetFileEnum'); @NetFileClose := GetProcAddress(fHandle9x, 'NetFileClose2'); end; end; procedure TMonitorForm.bnKillClick(Sender: TObject); begin if lwResources.Selected=nil then exit; if bNT then NetFileCloseNT(nil,StrToInt(lwResources.Selected.Caption)) else NetFileClose(nil,StrToInt(lwResources.Selected.Caption)); end; end.
#8
Отправлено 08.07.2005, 17:03:42
вот только не надо так много цитироватьОчень рад...Ну это не вовсем то что надо, но тоже пригодилось.Если тебя интересует доступ к твоим файлам по локалке, взгляни на этот код.
unit MainUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, NetApi; type TMonitorForm = class(TForm) lwResources: TListView; bnShow: TButton; bnKill: TButton; procedure bnShowClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure bnKillClick(Sender: TObject); private { Private declarations } bNT:Boolean; fHandleNT, fHandle9x : THandle; public { Public declarations } end; var MonitorForm: TMonitorForm; implementation {$R *.dfm} procedure TMonitorForm.bnShowClick(Sender: TObject); var FileInfoNT: PFileInfo3Array; FileInfo9x: array [0..1024] of TFileInfo502; i, iTE, iRE: Integer; begin lwResources.Items.Clear; if bNT then begin // для NT FileInfoNT := nil; if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @iRE, @iTE, nil)<>0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfoNT^[i].fi3_id)); SubItems.Add(FileInfoNT^[i].fi3_pathname); SubItems.Add(FileInfoNT^[i].fi3_username); SubItems.Add(IntToStr(FileInfoNT^[i].fi3_num_locks)); end; end; end else begin // для Windows 9x if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @iRE, @iTE)<> 0 then exit; for i:=0 to iRE-1 do begin with lwResources.Items.Add do begin Caption := string(IntToStr(FileInfo9x[i].fi502_id)); SubItems.Add(FileInfo9x[i].fi502_pathname); SubItems.Add(FileInfo9x[i].fi502_username); end; end; end; end; procedure TMonitorForm.FormShow(Sender: TObject); var ver: TOSVersionInfo; begin ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); GetVersionEx(Ver); case Ver.dwPlatformId of VER_PLATFORM_WIN32_NT : bNT := True; VER_PLATFORM_WIN32_WINDOWS : bNT := False; VER_PLATFORM_WIN32s : bNT := False end; if bNT then begin fHandleNT := LoadLibrary('NETAPI32.DLL'); @NetFileEnumNT := GetProcAddress(fHandleNT, 'NetFileEnum'); @NetFileCloseNT := GetProcAddress(fHandleNT, 'NetSessionClose'); end else begin fHandle9x := LoadLibrary('SVRAPI.DLL'); @NetFileEnum := GetProcAddress(fHandle9x, 'NetFileEnum'); @NetFileClose := GetProcAddress(fHandle9x, 'NetFileClose2'); end; end; procedure TMonitorForm.bnKillClick(Sender: TObject); begin if lwResources.Selected=nil then exit; if bNT then NetFileCloseNT(nil,StrToInt(lwResources.Selected.Caption)) else NetFileClose(nil,StrToInt(lwResources.Selected.Caption)); end; end.
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0