Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

Как программно узнать каким юзером занят файл?   Найти похожие ветки 

 
werr   (2002-07-09 16:41) [0]

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


 
werr   (2002-07-12 09:37) [1]

help!
Неужто никто не знает как это сделать?


 
Eugene Lachinov   (2002-07-12 19:00) [2]

Компилиться не будет, но решение, надеюсь да.

FLibHandle : THandle;

type
TFileInfo3 = packed record
fi3_id : DWORD;
fi3_permissions : DWORD;
fi3_num_locks : DWORD;
fi3_pathname : PWChar;
fi3_username : PWChar;
end;
PFileInfo3 = ^TFileInfo3;

TFileInfo3Array = array[0..$1000] of TFileInfo3;
PFileInfo3Array = ^TFileInfo3Array;

var
NetFileEnumNT : function (servername : PWChar;
basepath : PWChar;
username : PWChar;
level : DWORD;
bufptr : Pointer;
prefmaxlen : DWORD;
entriesread : LPDWORD;
totalentries : LPDWORD;
resume_handle : LPDWORD) : DWORD; stdcall;

NetApiBufferFreeNT : function (var Buffer : Pointer) : DWord; stdcall;

procedure TMainForm.SearchNT;
var
i : Integer;
pBuf : PFileInfo3Array;
wsServerName : WideString;
entriesread : DWORD;
totalentries : DWORD;
sPath, sFileName : string;
begin
@NetFileEnumNT := GetProcAddress(FLibHandle, "NetFileEnum");
@NetApiBufferFreeNT := GetProcAddress(FLibHandle, "NetApiBufferFree");
wsServerName := "\\" + ComputerEdit.Text;
sFileName := StUpcase(FileNameEdit.Text);
pBuf := nil;
if NetFileEnumNT(PWChar(wsServerName), nil, nil, 3, @pBuf, DWORD(-1),
@entriesread, @totalentries, nil) = 0 then try
for i := 0 to entriesread - 1 do begin
sPath := string(pBuf^[i].fi3_pathname);
if Pos(sFileName, StUpcase(sPath)) > 0 then
with FileList.Add do begin
Strings[0] := string(pBuf^[i].fi3_username);
Strings[1] := sPath;
end
end
finally
NetApiBufferFreeNT(Pointer(pBuf));
end else
Win32Check(False)
end;

FLibHandle := LoadLibrary("NETAPI32.DLL");
if FLibHandle <> 0 then try
SearchNT
finally
FreeLibrary(FLibHandle)
end



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-50967
MAxiMum
2002-08-21 19:42
2002.09.16
Команда


1-50778
vlv
2002-09-03 11:06
2002.09.16
Как по узнать запускаемый файл приложения по его Hinstance?


1-50736
Strumpf
2002-09-05 16:48
2002.09.16
Как перевести оператор in из Delphi в С++?


1-50833
Dmitry1
2002-09-04 09:54
2002.09.16
Аналог функции барсика - format


3-50580
Dimkin
2002-08-23 17:29
2002.09.16
Вызов хранимой процедуры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский