手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

在WIN2000与WIN98中创建共享文件夹的方法

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

TWin95_NetUserGetInfo = function(ServerName, UserName: PChar; Level: DWORD; var
BfrPtr: Pointer): Integer;
stdcall;
TWin95_NetApiBufferFree = function(BufPtr: Pointer): Integer;
stdcall;
TWin95_NetWkstaUserGetInfo = function(Reserved: PChar; Level: Integer; var
BufPtr: Pointer): Integer;
stdcall;

//WinNT UNICODE equivalents from NETAPI32.DLL

TWinNT_NetWkstaGetInfo = function(ServerName: PWideChar; level: Integer; var
BufPtr: Pointer): Integer;
stdcall;
TWinNT_NetApiBufferFree = function(BufPtr: Pointer): Integer;
stdcall;

var

Win95_NetUserGetInfo: TWin95_NetUserGetInfo;
Win95_NetWkstaUserGetInfo: TWin95_NetWkstaUserGetInfo;
Win95_NetApiBufferFree: TWin95_NetApiBufferFree;

WinNT_NetWkstaGetInfo: TWinNT_NetWkstaGetInfo;
WinNT_NetApiBufferFree: TWinNT_NetApiBufferFree;

WSNT: ^WKSTA_INFO_100;
WS95: ^WKSTA_USER_INFO_1;

EC: DWORD;
hNETAPI: THandle;
begin
try

Result := '';

if IsWinNT then
begin
hNETAPI := LoadLibrary('NETAPI32.DLL');
if hNETAPI <> 0 then
begin @WinNT_NetWkstaGetInfo := GetProcAddress(hNETAPI, 'NetWkstaGetInfo');
@WinNT_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree');

EC := WinNT_NetWkstaGetInfo(nil, 100, Pointer(WSNT));
if EC = 0 then
begin
Result := WideCharToString(WSNT^.wki100_langroup);
WinNT_NetApiBufferFree(Pointer(WSNT));
end;
end;
end
else
begin
hNETAPI := LoadLibrary('RADMIN32.DLL');
if hNETAPI <> 0 then
begin @Win95_NetApiBufferFree := GetProcAddress(hNETAPI, 'NetApiBufferFree');
@Win95_NetUserGetInfo := GetProcAddress(hNETAPI, 'NetUserGetInfoA');

EC := Win95_NetWkstaUserGetInfo(nil, 1, Pointer(WS95));
if EC = 0 then
begin
Result := WS95^.wkui1_logon_domain;
Win95_NetApiBufferFree(Pointer(WS95));
end;
end;
end;

finally
if hNETAPI <> 0 then
FreeLibrary(hNETAPI);
end;
end;

function AppendShareResource(ServerName,FilePath,NetName, Remark : string): Integer;
var
ShInfo: TSHARE_INFO_502;
parm_err:PDWORD;
_FilePath,_NetName, _Remark : PWideChar ;
_ServerName : Pchar ;
LibHandle : THandle;
begin
LibHandle := LoadLibrary(NTlib);
if LibHandle = 0 then
raise Exception.Create('Unable to map library: ' NTlib);
try
@NTNetShareAdd := GetProcAddress(Libhandle, 'NetShareAdd');
GetMem(_ServerName,255) ; //分配内存
GetMem(_FilePath,255);
GetMem(_NetName,255);
GetMem(_Remark,255);
StringToWideChar(FilePath,_FilePath,255); //字符串转换,一定要转换正确
StringToWideChar(NetName,_NetName,255);
StringToWideChar(Remark,_Remark,255);
strpcopy(_ServerName,ServerName);
//开始创建结构
with ShInfo do
begin
shi502_netname := _NetName;
shi502_type := STYPE_DISKTREE ;
shi502_remark := _Remark ;
shi502_max_uses := $FFFFFFFF;
shi502_current_uses := 10;
shi502_path := _FilePath;
shi502_passwd := nil;
shi502_reserved := 0;
shi502_security_descriptor := nil;
shi502_permissions := ACCESS_ALL;
end;
try
Result := NTNetShareAdd(_ServerName, 502, @ShInfo, parm_err);
finally // 别忘了释放内存
FreeMem(_ServerName,255);
FreeMem(_FilePath,255);
FreeMem(_NetName,255);
FreeMem(_Remark,255);
end;
finally
FreeLibrary(Libhandle);
end;
end;

function DeleteShareResource(ServerName: string; NetName: string): Integer;
var
_ServerName : Pchar ;
LibHandle : THandle;
begin
LibHandle := LoadLibrary(NTlib);
if LibHandle = 0 then
raise Exception.Create('Unable to map library: ' NTlib);
try
@NTNetShareDel := GetProcAddress(Libhandle, 'NetShareDel');
GetMem(_ServerName,255) ; //分配内存
strpcopy(_ServerName,ServerName);
try
Result := NTNetShareDel(_ServerName, NetName,0);
finally
FreeMem(_ServerName,255);
end;
finally
FreeLibrary(Libhandle);
end;
end;

function AddShareResource (ServerName : PChar; FilePath : PChar;
NetName : PChar; Remark : PChar ) : Integer;
var
MyShare : Share_Info50;
PMyShare : ^Share_Info50;
LibHandle : THandle;
begin
LibHandle := LoadLibrary(NTlib);
if LibHandle = 0 then
raise Exception.Create('Unable to map library: ' MElib);
try
@MENetShareAdd := GetProcAddress(Libhandle, 'NetShareDel');
strLcopy(MyShare.shi50_netname,NetName,13);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!