网络小工具 ShareView[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 lyris 的 blog

    @netsharedelnt := getprocaddress(flibhandle, 'netsharedel');
    if not assigned(netsharedelnt) then
    begin
      freelibrary(flibhandle);
      exit;
    end;
    i := sizeof(widechar) * 256;
    getmem(nament, i);
    stringtowidechar(sharename, nament, i);
    netsharedelnt(nil, nament, 0);
    freemem(nament);
  end else begin
    flibhandle := 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;

本文关键:网络小工具 ShareView
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top