Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > NetFileEnum возвращает пустую структуру


Автор: Dreamka 2.10.2007, 09:10
вот код,все как в примерах,но в результате структура FileInfo ничего не содержит в себе
сама ф-ция возвращает ноль,то бишь она выполняется,расшаринных ресурсов полно,т.к. я запускаю на нашем рабочем сервере.объясните,пожалуйста,в чем ошибка,ге я не то сделал 
Код

type
 TFileInfo = packed record
fi3_id:dword;
fi3_permision:dword;
fi3_num_lock:dword;
fi3_pathname:pwchar;
fi3_username:pwchar;
end;
PFileInfo=^TFileInfo;
TFileInfoArrey=array [1..512]of TFileInfo;
PFileInfoArrey=^TFileInfoArrey;



function GetNetFile(FileName:string):string;
var
LibH,hFile:THandle;
//hFile:dword;
FileInfo:PFileInfoArrey;
basename:pwchar;
buf:pointer;
TotalEntries,EntriesReadNT: DWORD;
EntriesRead,TotalAvial: Word;
i,poz:integer;
str,str1:string;
iSize:integer;
begin
LibH:=LoadLibrary('NETAPI32.DLL');
if LibH=0 then exit;
@NewNetFileEnum := GetProcAddress(LibH, 'NetFileEnum');
    if not Assigned(NewNetFileEnum) then
    begin
      FreeLibrary(LibH);
      Exit;
    end;
    FileInfo := nil;
  Unit1C.EnablePrivilegeEx(getCurrentProcess(),'SeDebugPrivilege');//установка привилегии
  if NewNetFileEnum(nil,nil,nil,3,@FileInfo,DWORD(-1),@EntriesReadNT, @totalentries, nil)=0 then
    begin
    for i:=0 to EntriesReadNT-1 do
    begin
      with Unit1.Form1.NetList.Items.Add do  //Заполнение данными из структуры
      begin
        Caption := string(IntToStr(FileInfo^[i].fi3_id)); //Идентификатор
        SubItems.Add(FileInfo^[i].fi3_pathname);      //Путь к файлу
        SubItems.Add(FileInfo^[i].fi3_username);   //Имя пользователя
      end;
    end;
    end;

Автор: MetalFan 2.10.2007, 21:23
минус тебе за неумение задавать вопросы.
если уж даешь листинг функции, то позаботься как минимум о переносимости и форматировании.

Автор: Alix 3.10.2007, 10:23
Цитата
The NetFileEnum function returns information about some or all open files on a server, depending on the parameters specified.

Тебе, как я понял надо
Цитата
The NetShareEnum function retrieves information about each shared resource on a server.

Посмотри там же где нашел свой пример, там все есть.

Автор: RA 3.10.2007, 13:48
http://delphimaster.ru/articles/netmon/index.html

Автор: Alix 3.10.2007, 14:06
Именно туда я его и отсылал )

Автор: RA 3.10.2007, 14:44
 smile 

Автор: Dreamka 11.10.2007, 09:31
Цитата

The NetFileEnum function returns information about some or all open files on a server, depending on the parameters specified.

мне нужно именно это и пример взял от туда  smile 

Автор: Alix 11.10.2007, 13:39
Цитата
сама ф-ция возвращает ноль,то бишь она выполняется,расшаринных ресурсов полно,

понимаешь... расшаренный ресурс - это расшаренный ресурс, чтобы получить их список тебе нужна именно NetShareEnum. А вот если кто-то чужой откроет на твоем компе расшаренный файл, то это покажет NetFileEnum.
Ты определись что тебе нужно - список расшареных ресурсов или список открытых файлов.

Автор: Dreamka 12.10.2007, 08:09
я наверное не правильно выразился,приношу извинения  smile 
мне нужно определить кто юзает определенные файлы,вроде для этой цели должна использоваться именно эта ф-ция

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)