你可以参考MSDN,使用NetShareAdd函数
下面的代码集供参考,相关的声明参考MSDN
Function CreateShare( ServerName : String; NetName : String; ShareType : LongWord; Re : String; Permissions : LongWord; Max_Uses : LongWord; Current_Uses : LongWord; Path : String; Password : String ) : Boolean;
Var
Parm_Err : LongWord;
Buf : Pointer;
Share_Info : TShare_Info_2;
wServer : WideString;
wNetName : WideString;
wRe : WideString;
wPath : WideString;
wPassword : WideString;
Begin
wServer := ServerName;
wNetName := NetName;
wRe := Re;
wPath := Path;
wPassword := Password;
Parm_Err := 0;
Share_Info.NetName := PWideChar( wNetName );
Share_Info._Type := ShareType;
Share_Info.Re := PWideChar( wRe );
Share_Info.Permissions := Permissions;
Share_Info.Max_Uses := Max_Uses;
Share_Info.Current_Uses := Current_Uses;
Share_Info.Path := PWideChar( wPath );
Share_Info.Password := PWideChar( wPassword );
Buf := @Share_Info;
Result := NetShareAdd( PWideChar( wServer ), 2, Buf, Parm_Err ) = 0;
End;
下面的代码集供参考,相关的声明参考MSDN
Function CreateShare( ServerName : String; NetName : String; ShareType : LongWord; Re : String; Permissions : LongWord; Max_Uses : LongWord; Current_Uses : LongWord; Path : String; Password : String ) : Boolean;
Var
Parm_Err : LongWord;
Buf : Pointer;
Share_Info : TShare_Info_2;
wServer : WideString;
wNetName : WideString;
wRe : WideString;
wPath : WideString;
wPassword : WideString;
Begin
wServer := ServerName;
wNetName := NetName;
wRe := Re;
wPath := Path;
wPassword := Password;
Parm_Err := 0;
Share_Info.NetName := PWideChar( wNetName );
Share_Info._Type := ShareType;
Share_Info.Re := PWideChar( wRe );
Share_Info.Permissions := Permissions;
Share_Info.Max_Uses := Max_Uses;
Share_Info.Current_Uses := Current_Uses;
Share_Info.Path := PWideChar( wPath );
Share_Info.Password := PWideChar( wPassword );
Buf := @Share_Info;
Result := NetShareAdd( PWideChar( wServer ), 2, Buf, Parm_Err ) = 0;
End;
var reg : TRegistry; name : String; //s是在网上邻居里的文件夹名
begin
name := 'DirName';//建立一个只读,无密码共享目录
reg := TRegistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Network\LanMan\'+name,true );
reg.WriteInteger( 'Flags', 401 ) ; //权限:401代表为访问,258为完全访问,259为密码访问
reg.WriteInteger( 'Parm1enc', 0 ) ; //参数2,放置完全访问密码,已加密
reg.WriteInteger( 'Parm2enc', 0 ) ; //参数2,放置只读访问密码,已加密
reg.WriteString( 'Path', 'C:\MYDIR' ) ; //放置要共享的目录的绝对路径
reg.WriteString( 'Re', '' ) ;
reg.WriteInteger( 'Type', 0 ) ;
end;
PUSER_INFO_1 = ^SHARE_INFO_50;
SHARE_INFO_50=Record
netname:array [0..NETNAME_LEN-1] of Char;
sharetype:SMALLINT;
flags:SmallInt;
re:PChar;
path:PChar;
rw_password:array [0..PASSWORD_LEN-1] of Char;
ro_password:array [0..PASSWORD_LEN-1] of Char;
End;
var Buf: PUSER_INFO_1;
begin
GetMem(Buf, Sizeof(Buf));
with Buf^ do begin
Buf.netname := 'PUBLIC';
Buf.sharetype := STYPE_DISKTREE;
Buf.flags := SHI50F_FULL;
Buf.re := nil;
Buf.path := pchar('E:\PUBLIC');
Buf.rw_password := '0';
Buf.ro_password :='0';
end;
showmessage(inttostr(NetShareAdd(NIL,50, Pointer(Buf), sizeof(SHARE_INFO_50))));
FreeMem(Buf);
你的方法要重新启动系统,我的程序是不希望这样的