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

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

  考试大计算机等级站整理收集:

  在去年写的‘使用SQLSERVER的扩展存储过程实现远程备份与恢复 (http://www.csdn.net/Develop/read_article.ASP?id=21304)’一文中许多人都提到如何在程序中创建共享文件夹的问题,我当时因为工作忙,只看到了留言没有及时去回复,对读者造成的不便深感抱歉。在此文中,我就把如何在WIN2000与WIN98中创建共享文件夹的代码一一列出(包括相关的一系列网络函数等),以慰大家。
  unit PubLib;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ComCtrls, ToolWin, Db, ADODB, DBCtrls, StdCtrls,Math,dbgrids,
  Buttons, ExtCtrls,cliPBrd,ReGIStry, variants;
  const
  NTlib = 'NETAPI32.DLL';
  MElib = 'SVRAPI.DLL';
  {共享类型}
  STYPE_DISKTREE = 0 ;
  STYPE_PRINTQ = 1 ;
  STYPE_DEVICE = 2 ;
  STYPE_IPC = 3 ;
  {访问权限}
  Access_READ = 0 ;
  ACCESS_WRITE = 1 ;
  ACCESS_CREATE = 2 ;
  ACCESS_EXEC = 3 ;
  ACCESS_DELETE = 4 ;
  ACCESS_ALL = 7 ;
  type
  NET_API_STATUS = DWORD;
  //纪录类型声明,注意参数类型的正确对应,最好别看 Delphi 的帮助,引起误导
  TSHARE_INFO_502 = record
  shi502_netname: PWideChar;
  shi502_type: DWORD;
  shi502_remark: PWideChar;
  shi502_permissions: DWORD;
  shi502_max_uses: DWORD;
  shi502_current_uses: DWORD;
  shi502_path: PWideChar;
  shi502_passwd: PWideChar;
  shi502_reserved: DWORD;
  shi502_security_descriptor: PSECURITY_DESCRIPTOR;
  end;
  Share_Info50 = packed record
  shi50_netname : array[0..12] of Char; {13}
  shi50_type : Byte;
  shi50_flags : Word;
  shi50_remark : PChar;
  shi50_path : PChar;
  shi50_rw_password : array[0..8] of Char; {9}
  shi50_ro_password : array[0..8] of Char;
  end;

  //******************网络函数********************
  function IsWinNT: Boolean; //判断是否NT系统
  function GetPDCName: string; //取得主域控制器名称
  function GetDomainName: AnsiString; //获取域名
  //建立、删除共享文件夹
  //for win2000,winnt
  function AppendShareResource(ServerName,FilePath,NetName, Remark : string): Integer;
  function DeleteShareResource(ServerName: string; NetName: string): Integer;
  //for win98
  function AddShareResource (ServerName : PChar; FilePath : PChar;
  NetName : PChar; Remark : PChar ) : Integer;
  function DelShareResource(ServerName: string; NetName: string): Integer;

  var NTNetGetDCName : function(Server, Domain: pWideChar; var DC: pWideChar): NET_API_STATUS; StdCall; NTNetApiBufferFree: function(lpBuffer: Pointer):NET_API_STATUS; StdCall; NTNetShareAdd : function (servername:Widestring; level: DWORD; Buf: PBYTE; var parm_err: PDWORD ): DWORD; stdcall;//建立共享目录函数 NTNetShareDel : function (ServerName:Widestring; NetName: Widestring; Reserved: DWord): Integer; stdcall; //撤销共享目录函数 MENetShareAdd : function (ServerName : PChar; ShareLevel : SmallInt; Buffer : Pointer; Size : Word) : Integer; StdCall; MENetShareDel : function (ServerName : PChar; NetName : PChar; Reserved : Word) : Integer; StdCall;

  implementation

  function IsWinNT: Boolean;
  var
  VersionInfo: TOSVersionInfo;
  begin
  VersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  Result := GetVersionEx(VersionInfo);
  if Result then
  Result := VersionInfo.dwPlatformID = VER_PLATFORM_WIN32_NT;
  end;

  function GetPDCName: string;
  var
  pDomain : PWideChar;
  LibHandle : THandle;
  begin
  Result := '';
  LibHandle := LoadLibrary(NTlib);
  if LibHandle = 0 then
  raise Exception.Create('Unable to map library: ' + NTlib);
  try
  @NTNetGetDCName := GetProcAddress(Libhandle, 'NetGetDCName');
  @NTNetApiBufferFree := GetProcAddress(Libhandle, 'NetApiBufferFree');
  try
  if NTNetGetDCName(nil, nil, pDomain) = 0 then
  Result := WideCharToString(pDomain);
  finally
  NTNetApiBufferFree(pDomain);
  end;
  finally
  FreeLibrary(Libhandle);
  end;
  end;

上一页123下一页

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答