@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;