本地文件夹共享,急急急!-----------------------ing

本地文件夹共享,急急急!!
在线等,最好有例子
好像NetShareAdd可以做,可是好像都不对!
[61 byte] By [Merrybip-陈] at [2008-1-9]
# 1
最好用NetShareAdd函数
我就是一直用这个函数不成功!
Merrybip-陈 at 2007-10-18 > top of Msdn China Tech,Delphi,Windows SDK/API...
# 2
网上找了一个老毛子写的。我测试成功。贴出来

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;

procedure Button1Click(Sender: TObject);

end;

Share_INFO_2= record
shi2_netname:PWideChar; // ОБЯЗАТЕЛЬНО PWideChar иначе работать не будет...
shi2_type:DWORD;
shi2_remark:LPTSTR;
shi2_permissions:DWORD;
shi2_max_uses:DWORD;
shi2_current_uses:DWORD;
shi2_path:PWideChar;
shi2_passwd:LPTSTR;
end;
PShare_INFO_2 = ^Share_INFO_2;
LPShare_INFO_2 = ^Share_INFO_2;

SHARE_INFO_502 =record
shi502_netname: PCHAR;
shi502_type: DWORD;
shi502_remark: PCHAR;
shi502_permissions: DWORD;
shi502_max_uses: DWORD;
shi502_current_uses: DWORD;
shi502_path: PCHAR;
shi502_passwd: PCHAR;
shi502_reserved: DWORD;
shi502_security_descriptor: PSECURITY_DESCRIPTOR;
end;
PSHARE_INFO_502= ^SHARE_INFO_502;
LPSHARE_INFO_502=^SHARE_INFO_502;

const

STYPE_DISKTREE = $0001;
ACCESS_READ = $0001;

var
Form1: TForm1;
F:Cardinal;
function NetShareAdd(
Server : PwideChar;
level : cardinal;
Buf : Pointer;
var Parm_Err : DWORD):Cardinal;stdcall; external 'netapi32.dll' name 'NetShareAdd';

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
buf:Pointer;
UserInf:Share_INFO_2;
UserInf502:Share_INFO_502;
err:dWord;
begin

err:=0;
f:=0;
UserInf.shi2_netname:='Home Shared'; //共享名称
UserInf.shi2_type:=0;
UserInf.shi2_remark:=''; //备注
UserInf.shi2_permissions:=1;
UserInf.shi2_max_uses:= 1;
UserInf.shi2_current_uses:=0;
UserInf.shi2_path:='C:\test'; //文件夹
UserInf.shi2_passwd:=nil;

GetMem(Buf ,sizeof(UserInf));

F:=NetSHAREAdd(nil,2,@UserInf,err);
FreeMem(Buf);

end;

end.
sanmaotuo-老冯 at 2007-10-18 > top of Msdn China Tech,Delphi,Windows SDK/API...
# 3
上面的太乱,整理了一下。

TFormDemo = class(TForm)
ButtonAdd: TButton;
ButtonDel: TButton;
procedure ButtonAddClick(Sender: TObject);
procedure ButtonDelClick(Sender: TObject);
private
protected
public
end;

Share_Info= record
SHI_Netname: PWideChar;
SHI_Type: DWORD;
SHI_Remark: PWideChar;
SHI_Permissions: DWORD;
SHI_Max_Uses: DWORD;
SHI_Current_Uses: DWORD;
SHI_Path: PWideChar;
SHI_PassWord: PWideChar;
end;

var
FormDemo: TFormDemo;

implementation

function NetShareAdd(Server: PWideChar; Level: Cardinal; Buf: Pointer; var Parm_Err: DWORD): Cardinal; stdcall; external 'netapi32.dll' Name 'NetShareAdd';
function NetShareDel(Server: PWideChar; NetName: PWideChar; Reserved: DWORD): Cardinal; stdcall; external 'netapi32.dll' Name 'NetShareDel';

{$R *.DFM}

procedure TFormDemo.ButtonAddClick(Sender: TObject);
var
Buf: Pointer;
UserInf: Share_Info;
Err: dWord;
begin
Err := 0;
UserInf.SHI_Netname := '共享文件夹测试';
UserInf.SHI_Type := 0;
UserInf.SHI_Remark := '老毛子的水平就是高';
UserInf.SHI_Permissions := 1;
UserInf.SHI_Max_Uses := 1;
UserInf.SHI_Current_Uses := 0;
UserInf.SHI_Path := 'C:\Test';
UserInf.SHI_PassWord := nil;
GetMem(Buf, SizeOf(UserInf));
NetSHAREAdd(nil, 2, @UserInf, Err);
FreeMem(Buf);
end;

procedure TFormDemo.ButtonDelClick(Sender: TObject);
begin
NetShareDel(nil, '共享文件夹测试', 0);
end;
sanmaotuo-老冯 at 2007-10-18 > top of Msdn China Tech,Delphi,Windows SDK/API...
# 4
mark
tefei-蓝黑的梦 at 2007-10-18 > top of Msdn China Tech,Delphi,Windows SDK/API...
# 5
这种方法不能把一个文件夹只分配给一个特定的用户访问,只能分配给Everyone,我想分配给一个特定用户怎么办呢?
hotel9545-清风剑客 at 2007-10-18 > top of Msdn China Tech,Delphi,Windows SDK/API...