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

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  function GetDomainName: AnsiString;
  type
  WKSTA_INFO_100 = record
  wki100_platform_id: Integer;
  wki100_computername: PWideChar;
  wki100_langroup: PWideChar;
  wki100_ver_major: Integer;
  wki100_ver_minor: Integer;
  end;
  WKSTA_USER_INFO_1 = record
  wkui1_username: PChar;
  wkui1_logon_domain: PChar;
  wkui1_logon_server: PChar;
  wkui1_oth_domains: PChar;
  end;
  type
  //Win9X ANSI prototypes from RADMIN32.DLL and RLOCAL32.DLL

  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;

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答