WNetAddConnection2()
例:
function AddConnection(const RemoteName, LocalName, UserName, Password: string): DWORD;
var
  NetResource: TNetResource;
begin
  FillChar(NetResource, SizeOf(NetResource), 0);
  with NetResource do
  begin
    dwType := RESOURCETYPE_ANY;
    lpLocalName := PChar(LocalName);
    lpRemoteName := PChar(RemoteName);
    lpProvider := NULL;
  end;
  Result := WNetAddConnection2(NetResource, PChar(Password), PChar(UserName), 0);
end;
断开用
function WNetCancelConnection(lpName: PChar; fForce: BOOL): DWORD; stdcall;

解决方案 »

  1.   

    4.2  NT_Win2000中实现目录共享与断开共享
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls,FileCtrl,Shellapi;
      //directoryExists,SelectDirectory两函数要用到 FileCtrl单元,WinExec要用到ShellApi单元type
      TForm1 = class(TForm)
        StaticText1: TStaticText;
        Edit1: TEdit;
        Button1: TButton;
        Memo1: TMemo;
        Panel1: TPanel;
        Bevel1: TBevel;
        Button2: TButton;
        Button3: TButton;
        Edit2: TEdit;
        StaticText2: TStaticText;
        StaticText3: TStaticText;
        StaticText4: TStaticText;
        edit4: TEdit;
        cb1: TCheckBox;
        rg1: TRadioGroup;
        edit3: TEdit;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Edit1Change(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure edit4Change(Sender: TObject);
        procedure cb1Enter(Sender: TObject);
        procedure cb1Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      Dir: string;
    begin
    try
      Dir := 'C:\book';
      if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],0) then
        Edit1.text:= Dir;
        //选择要共享的目录 
    except
    end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
     str:string;
    begin
    if DirectoryExists(Edit1.text) then
      begin
        if edit2.text='' then
          begin
           showmessage('请指定共享名!');
             //提示指定要删除的共享名
           exit;
             //退出Button2Click函数
          end;
       str:='command.com /C net share '+edit2.text+'='+edit1.text;
       if cb1.Checked then
         str:=str+' /UNLIMITED'
            //同时访问人数无限制
         else
            str:=str+' /USERS:'+edit4.text;
            //指定可同时访问人数
            str:=str+' /REMARK:'+edit3.text;
        case rg1.ItemIndex of
          0:str:=str+' /CACHE:Manual';
           //手动配置缓存
          1:str:=str+' /CACHE:Automatic';
           //自动配置缓存
          2:str:=str+' /CACHE:No';
           //不需要缓存
         end;   if winexec(pchar(str),sw_hide)>31 then
        memo1.lines.add(edit1.text+'共享成功!')
        else
         memo1.lines.add(edit1.text+'共享失败!');
      end;
    end;procedure TForm1.Edit1Change(Sender: TObject);
    begin
    edit2.text:=ExtractfileName(edit1.text);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     memo1.Lines.Clear;
    end;procedure TForm1.edit4Change(Sender: TObject);
    begin
      try
        strtoint(edit4.text);
      except
        showmessage('请输入整数!');    
      end;
    end;procedure TForm1.cb1Enter(Sender: TObject);
    begin
    cb1.Checked:=not cb1.Checked;
      //点击cb1后选择状态反转
    end;procedure TForm1.cb1Click(Sender: TObject);
    begin
     if cb1.Checked then
        edit4.Enabled:=false
        //不限制用户数则使edit4失效
        else
           edit4.Enabled:=true;
    end;procedure TForm1.Button3Click(Sender: TObject);
    var
     str:string;
    begin
    if DirectoryExists(Edit1.text) then
      begin
        if edit2.text='' then
          begin
           showmessage('请指定要取消的共享名!');
           exit;
          end;
         str:='command.com /C net share '+edit2.text+' /delete';
       if winexec(pchar(str),sw_hide)>31 then
        memo1.lines.add(edit1.text+'共享取消!')
        else
         memo1.lines.add(edit1.text+'取消共享失败!');
      end;
    end;
    end.