Rede - compartilhar o hd ou pasta

Top  Previous  Next

const

  NERR_Success     = 0;

  NERR_BASE        = 2100;

  STYPE_DISKTREE   = 0;

  STYPE_PRINTQ     = 1;

  SHI50F_RDONLY    = 1;

  SHI50F_FULL      = 2;

  SHI50F_DEPENDSON = (SHI50F_RDONLY or SHI50F_FULL);

  SHI50F_PERSIST   = 256;

  SHI50F_SYSTEM    = 512;

 

  function NetShareAdd(ServerName: PChar; ShareLevel: SmallInt; Buffer: Pointer; 

                       Size: Word): Integer; stdCall; external 'netapi32.dll';

 

var

  Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

type

  SHARE_INFO_2 = record

    shi2_netname     : PWideChar;

    shi2_type        : DWORD;

    shi2_remark      : PWideChar;

    shi2_permissions : DWORD;

    shi2_max_uses    : DWORD;

    shi2_current_uses: DWORD;

    shi2_path        : PWideChar;

    shi2_passwd      : PWideChar;

  end;

 

const

  ACCESS_READ   = $01;

  ACCESS_WRITE  = $02;

  ACCESS_CREATE = $04;

  ACCESS_EXEC   = $08;

  ACCESS_DELETE = $10;

  ACCESS_ATRIB  = $20;

  ACCESS_PERM   = $40;

  ACCESS_ALL    = ACCESS_READ or ACCESS_WRITE or ACCESS_CREATE or

                  ACCESS_EXEC or ACCESS_DELETE or ACCESS_ATRIB or ACCESS_PERM;

 

function ShareResource2(const ServerName: PChar;  const FilePath, NetName, Remark: PWideChar;

                        const ShareType: Byte; const Permissions: DWORD; const RWPass: PWideChar): Integer;

var

  ShareI: SHARE_INFO_2;

  PErr   : DWORD;

begin

  FillChar(ShareI, SizeOf(ShareI), 0);

  ShareI.shi2_netname     := NetName;

  ShareI.shi2_type        := ShareType;

  ShareI.shi2_remark      := Remark;

  ShareI.shi2_permissions := Permissions;

  ShareI.shi2_permissions := Cardinal(-1);

  ShareI.shi2_path        := FilePath;

  ShareI.shi2_max_uses    := 90;

  ShareI.shi2_passwd      := RWPass;

  PErr   := 0;

  Result := NetShareAdd(ServerName, 2, @ShareI, PErr);

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  Edit1.Text := IntToStr(ShareResource2(nil, 'C:\TEMP''CTemp'

                         'Teste de Compartilhamento!', STYPE_DISKTREE, ACCESS_ALL''));

end;