{
Share directory in network using RmtShare.exe.
Example:
 @run RmtShare \\server\test /DELETE
 @run RmtShare \\server\test=e:\test /GRANT Все:Read /REMARK:"Test share"
 RtmShareExe('\\server\test','e:\test','/GRANT Все:READ'
                      +' /GRANT Администраторы:"FULL CONTROL"'
                      +' /GRANT "Опытные пользователи":CHANGE'
                      +' /REMARK:"Test share"');
 RtmShareExe('\\server\test','','/DELETE');
}
function RmtShareExe(Share,Local,Options:String; TimeOut:Integer):Boolean;
var b:Boolean; pid,err:Integer; Cmd,Log:String; fs,ms:Real;
begin
 RmtShareExe:=False;
 Share:=Trim(Share);
 Local:=Trim(Local);
 Options:=Trim(Options);
 if (Length(Share)>0) and (Pos('\\',Share)<>1)
 then Share:='\\'+ParamStr('ComputerName')+'\'+Trim(ExtractFileName(Share));
 Log:=AddBackSlash(ParamStr('TempPath'))+'RmtShare.Log';
 Cmd:=ParamStr('FileSearch RmtShare.Exe');
 if FileExists(Cmd) then begin
  Cmd:=GetComSpec+' /c '+Cmd;
  if Length(Share)>0 then begin
   Cmd:=Cmd+' '+Share;
   if Length(Local)>0 then Cmd:=Cmd+'='+Local;
  end;
  if Length(Options)>0 then Cmd:=Cmd+' '+Options;
  Cmd:=Cmd+' >> '+Log;
  fs:=0;
  if FileExists(Log) then begin
   if f_Reset(Log,1)=0 then fs:=f_Size;
   b:=f_Close;
  end;
  if fs>2*1024*1024 then b:=FileErase(Log);
  if FileExists(Log) then err:=Append(Log) else err:=Rewrite(Log);
  if err=0 then Writeln(GetDateTime(mSecNow),CRLF,Cmd);
  err:=Append('');
  pid:=Task_Init(Cmd);
  b:=Task_Ctrl(pid,'Display=0')<>'';
  if Task_Run(pid) then begin
   ms:=mSecNow;
   while mSecNow<ms+TimeOut do
   if Task_Wait(pid,10) then b:=wdt_Reset(True)>0 else ms:=0;
   RmtShareExe:=not Task_Wait(pid,0);
  end;
  b:=Task_Free(pid);
 end;
 Log:='';
 Cmd:='';
end;
