´òÓ¡±¾ÎÄ ´òÓ¡±¾ÎÄ ¹Ø±Õ´°¿Ú ¹Ø±Õ´°¿Ú
ÍøÂçС¹¤¾ß ShareView
×÷ÕߣºÎ人SEOãÉÌΠ ÎÄÕÂÀ´Ô´£ºÃôèºÍø  µã»÷Êý11018  ¸üÐÂʱ¼ä£º2009/4/23 18:28:24  ÎÄÕ¼È룺mintao  ÔðÈα༭£ºmintao
:= LoadLibrary(''''SVRAPI.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetShareDel := GetProcAddress(FLibHandle, ''''NetShareDel'''');
    if not Assigned(NetShareDel) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    FillChar(Name9x, SizeOf(Name9x), #0);
    move(ShareName[1], Name9x[0], Length(ShareName));
    NetShareDel(nil, @Name9x, 0);
  end;
  FreeLibrary(FLibHandle);
end;

procedure AddShare(ShareName, ShareDir: string);
const
  STYPE_DISKTREE = 0;
  ACCESS_ALL = 258;
  SHI50F_FULL = 258;
var
  FLibHandle: THandle;
  Share9x: TShareInfo50;
  ShareNT: TShareInfo2;
  TmpDirNT, TmpNameNT: PWChar;
  OS: Boolean;
  TmpLength: Integer;
begin
  if not IsNT(OS) then Exit;

  if OS then begin
    FLibHandle := LoadLibrary(''''NETAPI32.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetShareAddNT := GetProcAddress(FLibHandle, ''''NetShareAdd'''');
    if not Assigned(NetShareAddNT) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    TmpLength := SizeOF(WideChar) * 256;

    GetMem(TmpNameNT, TmpLength);
    StringToWideChar(ShareName, TmpNameNT, TmpLength);
    ShareNT.shi2_netname := TmpNameNT;

    ShareNT.shi2_type := STYPE_DISKTREE;
    ShareNT.shi2_remark := '''''''';
    ShareNT.shi2_permissions := ACCESS_ALL;
    ShareNT.shi2_max_uses := DWORD(-1);
    ShareNT.shi2_current_uses := 0;

    GetMem(TmpDirNT, TmpLength);
    StringToWideChar(ShareDir, TmpDirNT, TmpLength);
    ShareNT.shi2_path := TmpDirNT;

    ShareNT.shi2_passwd := '''''''';

    NetShareAddNT(nil, 2, @ShareNT, nil);
    FreeMem(TmpNameNT);
    FreeMem(TmpDirNT);
  end else begin
    FLibHandle := LoadLibrary(''''SVRAPI.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetShareAdd := GetProcAddress(FLibHandle, ''''NetShareAdd'''');
    if not Assigned(NetShareAdd) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    FillChar(Share9x.shi50_netname, SizeOf(Share9x.shi50_netname), #0);
    move(ShareName[1], Share9x.shi50_netname[0], Length(ShareName));
    Share9x.shi50_type := STYPE_DISKTREE;
    Share9x.shi50_flags := SHI50F_FULL;
    FillChar(Share9x.shi50_remark,
      SizeOf(Share9x.shi50_remark), #0);
    FillChar(Share9x.shi50_path,
      SizeOf(Share9x.shi50_path), #0);
    Share9x.shi50_path := PAnsiChar(ShareDir);
    FillChar(Share9x.shi50_rw_password,
      SizeOf(Share9x.shi50_rw_password), #0);
    FillChar(Share9x.shi50_ro_password,
      SizeOf(Share9x.shi50_ro_password), #0);
    NetShareAdd(nil, 50, @Share9x, SizeOf(Share9x));
  end;
  FreeLibrary(FLibHandle);
end;

procedure GetSessions(List: TStrings);
var
  OS: Boolean;
  FLibHandle: THandle;
  SessionInfo50: array[0..512] of TSessionInfo50;
  SessionInfo502: PSessionInfo502Array;
  TotalEntries, EntriesReadNT: DWORD;
  EntriesRead, TotalAvial: Word;
  i: integer;
begin
  List.Clear;
  if not IsNT(OS) then Exit;
  if OS then begin
    FLibHandle := LoadLibrary(''''NETAPI32.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetSessionEnumNT := GetProcAddress(FLibHandle, ''''NetSessionEnum'''');
    if not Assigned(NetSessionEnumNT) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    SessionInfo502 := nil;
    if NetSessionEnumNT(nil, nil, nil, 502, @SessionInfo502, DWORD(-1), @entriesreadNT, @totalentries, nil) = 0 then
      for i := 0 to EntriesReadNT - 1 do
        List.AddObject(string(SessionInfo502^[i].sesi502_cname), TSessionInfo502Obj.Create(SessionInfo502^[i]));
  end else begin
    FLibHandle := LoadLibrary(''''SVRAPI.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetSessionEnum := GetProcAddress(FLibHandle, ''''NetSessionEnum'''');
    if not Assigned(NetSessionEnum) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    if NetSessionEnum(nil, 50, @SessionInfo50, SizeOf(SessionInfo50), @EntriesRead, @TotalAvial) = 0 then
      for i := 0 to EntriesRead - 1 do
        List.AddObject(string(SessionInfo50[i].Sesi50_cname), TSessionInfo50Obj.Create(SessionInfo50[i]));
  end;
  FreeLibrary(FLibHandle);
end;

procedure CloseSession(SessionName: string);
var
  OS: Boolean;
  FLibHandle: THandle;
  CNameNT: PWideChar;
  CName9x: PAnsiChar;
  Key: SmallInt;
begin
  if not IsNT(OS) then Exit;
  if OS then begin
    FLibHandle := LoadLibrary(''''NETAPI32.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetSessionDelNT := GetProcAddress(FLibHandle, ''''NetSessionDel'''');
    if not Assigned(NetSessionDelNT) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    CNameNT := PWChar(WideString(''''\\'''' + SessionName));
    NetSessionDelNT(nil, CNameNT, nil);
  end else begin
    FLibHandle := LoadLibrary(''''SVRAPI.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetSessionDel := GetProcAddress(FLibHandle, ''''NetSessionDel'''');
    if not Assigned(NetSessionDel) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    CName9x := PAnsiChar(SessionName);
   // key := SessionCloseKey[i];
   // NetSessionDel(nil,CName9x,Key);
  end;
  FreeLibrary(FLibHandle);
end;

procedure GetFiles(FilesList: TStrings);
var
  OS: Boolean;
  FLibHandle: THandle;
  FileInfoNT: PFileInfo3Array;
  FileInfo9x: array[0..512] of TFileInfo50;
  TotalEntries, EntriesReadNT: DWORD;
  EntriesRead, TotalAvial: Word;
  i: integer;
begin
  if not IsNT(OS) then Exit;
  FilesList.Clear;
  if OS then begin
    FLibHandle := LoadLibrary(''''NETAPI32.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetFileEnumNT := GetProcAddress(FLibHandle, ''''NetFileEnum'''');
    if not Assigned(NetFileEnumNT) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    FileInfoNT := nil;
    if NetFileEnumNT(nil, nil, nil, 3, @FileInfoNT, DWORD(-1), @entriesreadNT, @totalentries, nil) = 0 then
      for i := 0 to EntriesReadNT - 1 do
        FilesList.AddObject(string(IntToStr(FileInfoNT^[i].fi3_id)), TFileInfo3Obj.Create(FileInfoNT^[i]));
  end else begin
    FLibHandle := LoadLibrary(''''SVRAPI.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetFileEnum := GetProcAddress(FLibHandle, ''''NetFileEnum'''');
    if not Assigned(NetFileEnum) then
    begin
      FreeLibrary(FLibHandle);
      Exit;
    end;
    if NetFileEnum(nil, nil, 50, @FileInfo9x, SizeOf(FileInfo9x), @EntriesRead, @TotalAvial) = 0 then
      for i := 0 to EntriesRead - 1 do
        FilesList.AddObject(IntToStr(FileInfo9x[i].fi50_id), TFileInfo50Obj.Create(FileInfo9x[i]));
  end;
  FreeLibrary(FLibHandle);
end;

procedure CloseFile(FileIndex: string);
var
  OS: Boolean;
  FLibHandle: THandle;
begin
  if not IsNT(OS) then Exit;
  if OS then begin //Êî?äëÿ NT
    FLibHandle := LoadLibrary(''''NETAPI32.DLL'''');
    if FLibHandle = 0 then Exit;
    @NetFileClose := GetProcAddress(FLibHandle, ''''NetFileClose'''');
    if not Assigned(NetFileClose) then
    begin
      FreeLibrary(FLibHan

ÉÏÒ»Ò³  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ...  ÏÂÒ»Ò³ >> 

´òÓ¡±¾ÎÄ ´òÓ¡±¾ÎÄ ¹Ø±Õ´°¿Ú ¹Ø±Õ´°¿Ú