CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

高分求救!!!!delphi能实现用程序控制文件夹共享吗?

楼主Old_Cow(老牛)2001-10-06 21:25:53 在 Delphi / VCL组件开发及应用 提问

我在服务器程序运行时需要设置一个目录为共享目录,在服务器退出时关闭共享,怎样才能实现呢?我曾尝试用写注册表的办法实现(就是在HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\NetWork\LanMan下建一子键,键值参考其他共享目录的。发现只有在系统重起之后才能实现,后来一想,这可能是由于win98下对注册表的修改要重起时才起作用。此法不通,各位大虾是否有解决的办法,我可是舍命求救了,先在这里谢过了,谢谢了 问题点数:23、回复次数:5Top

1 楼sundayboys(sunboy)回复于 2001-10-06 21:40:03 得分 10

http://go4.163.com/lovejingtao/procodes.htm  
  里边有个磁盘共享的,你看看吧,我没有试过。Top

2 楼tikkypeng(千两狂死郎之天衣有缝)回复于 2001-10-06 21:46:13 得分 13

转贴~~希望能对你有帮助~~~~~  
   
   
  网络共享目录的设定  
   
   
  --------------------------------------------------------------------------------  
   
  (【问题】   在局域网环境中共享目录或者共享打印机等是常见的操作,许多日常工作都是依赖于此的。如果能通过程序完成以往人工繁琐的操作,无疑会方便用户的使用。    
   
  【原理】    
  在Windows95/97/98中有一个svrapi.dll动态库,基本上所有的设定网络资源共享的函数都存在于此,我们只要调用这里的函数就能完成我们希望的功能。但是要注意的是这个动态库仅仅在Windows95/97/98中有效,在NT下为了保证其安全性,是通过更复杂的函数调用完成这些操作的,所以这里的方法不适于NT环境。    
   
  【步骤】    
  我们将用到的几个函数封装起来以方便使用,此外根据svrapi.h,补充了一些常量申明,使得调用更加直观。    
   
  unit   Sharing;    
   
  {   Sharing   98   v2.0   freeware}    
  interface    
  uses   Sysutils   ,ShareErr   {其中包含一些意外错误的代码和其他的小功能};    
  Type    
  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;    
  Const    
  NERR_Success   =   0;   {   Success   –   没有发生错误   }    
  NERR_BASE   =   2100;    
   
  {资源类型常量}    
  STYPE_DISKTREE   =   0;   {共享目录}    
  STYPE_PRINTQ   =   1;   {共享打印机}    
   
  {属性标记常量}    
  SHI50F_RDONLY   =   1;   {   只读共享}    
  SHI50F_FULL   =   2;   {   开放所有权限的共享}    
  SHI50F_DEPENDSON   =   (SHI50F_RDONLY   or   SHI50F_FULL);   {根据用户口令访问}    
   
  {下面两者的关系是OR,   例如:   flags   :=   (SHI50F_RDONLY   OR   SHI50F_SYSTEM    
  )   }    
  SHI50F_PERSIST   =   256;   {系统启动时建立}    
  SHI50F_SYSTEM   =   512;   {共享不可见}    
   
   
  ShareResource:   在指定机器上共享指定资源.    
  参数:    
  ServerName=   需要共享资源的机器的名字,如果是   Nil   则表示本机    
  FilePath   =   需要共享的资源的目录.   (字母都应大写);    
  NetName   =   共享资源的网络名称(别名),最长12个字母    
  Remark   =   备注,可以为空    
  ShareType   =   资源类别,参见常量设定.    
  Flags   =   共享标记,参见常量设定.    
  RWPass   =   读/写权限的口令,可以为空    
  ROPass   =   只读权限的口令,可以为空    
   
  例如:   ShareResource(Nil,   'C:\TEMP',   'TESTING',   'My   Comment',   STYPE_DIS    
  KTREE,   SHI50F_RDONLY,   '','MYPASS');    
  这里需要将本机的   C:\TEMP共享为'TESTING',备注是   'My   Comment'。    
  访问权限是只读(Read   Only),   只读权限口令是   'MYPASS'.   没有全权访问口令    
   
   
   
  function   ShareResource(ServerName   :   PChar;   FilePath   :   PChar;    
  NetName   :   PChar;   Remark   :   PChar;    
  ShareType   :   Byte;   Flags   :   Word;    
  RWPass   :   PChar;   ROPass   :   PChar   )   :   Integer;    
   
   
  {   DeleteShare:   在指定机器上删除指定的已经共享的资源.    
  参数:    
  ServerName=需要共享资源的机器的名字,如果是   Nil   则表示本机.    
  NetName   =共享资源的网络名称(别名),最长12个字母    
   
  例如:   DeleteShare(Nil,   'TESTING');    
  这个操作将本机上的名为'TESTING'的共享资源取消共享    
  function   DeleteShare(ServerName   :   PChar;   NetName   :   PChar)   :   Integer;    
   
  {   GetShareInfo:   取得指定机器上指定的共享资源的信息    
  参数:    
  ServerName   =共享资源存在的机器的名字,如果是   Nil   则表示本机;    
  NetName   =共享资源的网络名称(别名),最长12个字母;    
  ShareStruct   =   Share_Info50.共享资源的信息将添入到此结构中去;    
   
  例如:    
  var   MyShareStruct   :   Share_Info50;    
  GetShareInfo(Nil,   'TESTING',   MyShareStruct);    
   
  这个操作将本机上的名为'TESTING'的共享资源的信息填入   MyShareStruct结    
  构中去}    
  function   GetShareInfo(ServerName   :   PChar;   NetName   :   PChar;   Var   ShareSt    
  ruct   :   Share_Info50)   :   Integer;    
   
  {   SetShareInfo:   设置指定机器上指定的共享资源的信息.    
  参数:    
  ServerName   =共享资源存在的机器的名字,如果是   Nil   则表示本机;    
  NetName   =共享资源的网络名称(别名),最长12个字母;    
  ShareStruct   =需要设置的共享资源信息;    
   
  例如:   SetShareInfo(Nil,   'TESTING',   MyShareStruct);    
  此操作将MyShareStruct描述的共享信息写入到共享资源'TESTING'中}    
  function   SetShareInfo(ServerName   :   PChar;   NetName   :   PChar;   ShareStruct    
  :   Share_Info50)   :   Integer;    
   
  {以下部分来自   SVRAPI.h   希望了解详细情况的读者请参考win32.hlp}    
  function   NetShareAdd(ServerName   :   PChar;   ShareLevel   :   SmallInt;   Buffer    
  :   Pointer;   Size   :   Word)   :   Integer;   StdCall;    
  function   NetShareDel(ServerName   :   PChar;   NetName   :   PChar;   Reserved   :   W    
  ord)   :   Integer;   StdCall;    
  function   NetShareGetInfo(ServerName   :   PChar;   NetName   :   PChar;   ShareLev    
  el   :   SmallInt;   Buffer   :   Pointer;   Size   :   Word;   Var   Used   :   Word)   :   Integ    
  er;   StdCall;    
  function   NetShareSetInfo(ServerName   :   PChar;   NetName   :   PChar;   ShareLev    
  el   :   SmallInt;   Buffer   :   Pointer;   Size   :   Word;   Reserved   :   SmallInt)   :   I    
  nteger;   StdCall;    
   
  implementation    
   
  function   ShareResource(ServerName   :   PChar;   FilePath   :   PChar;    
  NetName   :   PChar;   Remark   :   PChar;    
  ShareType   :   Byte;   Flags   :   Word;    
  RWPass   :   PChar;   ROPass   :   PChar   )   :   Integer;    
  var   MyShare   :   Share_Info50;    
  PMyShare   :   ^Share_Info50;    
  begin    
  strLcopy(MyShare.shi50_netname,NetName,13);    
  MyShare.shi50_type   :=   ShareType;    
  MyShare.shi50_flags   :=   Flags;    
  MyShare.shi50_remark   :=   Remark;    
  MyShare.shi50_path   :=   FilePath;    
  strLcopy(MyShare.shi50_rw_password,RWPass,9);    
  strLcopy(MyShare.shi50_ro_password,ROPass,9);    
  PMyShare   :=   @MyShare;    
  Result   :=   NetShareAdd(ServerName,50,PMyShare,SizeOf(MyShare));    
  end;    
   
  function   DeleteShare(ServerName   :   PChar;   NetName   :   PChar)   :   Integer;    
  begin    
  Result   :=   NetShareDel(ServerName,NetName,0);    
  end;    
   
  function   GetShareInfo(ServerName   :   PChar;   NetName   :   PChar;   Var   ShareSt    
  ruct   :   Share_Info50)   :   Integer;    
  var   PMyShare   :   ^Share_Info50;    
  AmountUsed   :   Word;    
  Error   :   Integer;    
  begin    
  PMyShare   :=   AllocMem(255);    
  Error   :=   NetShareGetInfo(ServerName,NetName,50,PMyShare,255,AmountUs    
  ed);    
  If   Error   =   0   Then    
  Begin    
  ShareStruct.shi50_netname   :=   PMyShare.shi50_netname;    
  ShareStruct.shi50_type   :=   PMyShare.shi50_type;    
  ShareStruct.shi50_flags   :=   PMyShare.shi50_flags;    
  ShareStruct.shi50_remark   :=   PMyShare.shi50_remark;    
  ShareStruct.shi50_path   :=   PMyShare.shi50_path;    
  ShareStruct.shi50_rw_password   :=   PMyShare.shi50_rw_password;    
  ShareStruct.shi50_ro_password   :=   PMyShare.shi50_ro_password;    
  End;    
  FreeMem(PMyShare);    
  Result   :=   Error;    
  end;    
   
  function   SetShareInfo(ServerName   :   PChar;   NetName   :   PChar;   ShareStruct    
  :   Share_Info50)   :   Integer;    
  var   PMyShare   :   ^Share_Info50;    
  begin    
  PMyShare   :=   @ShareStruct;    
  Result   :=   NetShareSetInfo(ServerName,NetName,50,PMyShare,SizeOf(Shar    
  eStruct),0);    
  end;    
   
  function   NetShareAdd;   external   'SVRAPI.DLL';    
  function   NetShareDel;   external   'SVRAPI.DLL';    
  function   NetShareGetInfo;   external   'SVRAPI.DLL';    
  function   NetShareSetInfo;   external   'SVRAPI.DLL';    
   
  end.      
  Top

3 楼Old_Cow(老牛)回复于 2001-10-06 22:03:09 得分 0

太谢谢两位了,太谢谢了。Top

4 楼coldsea_2000(怒海风云)回复于 2001-10-06 22:29:08 得分 0

看着看着就花了眼,岂一个高深了得!  
   
  我觉得我懂的东西实在太少,在此向各位大侠致敬,以后有机会一定请教  
   
  Top

5 楼Nizvoo()回复于 2001-10-14 10:27:16 得分 0

NT   Server下如何搞?Top

相关问题

  • 请教!如何用delphi程序控制usb接口
  • 怎样用Delphi编写程序,控制网际快车或影音传送带?
  • 如何用delphi建立一个共享文件夹啊?
  • 在B/S下,怎么将一个要写的Access文件路径用程序控制到客户端的某个文件夹里?急呀,在线等.......
  • 如何用程序控制访问局域网中其他机器的共享资源
  • delphi能不能将本机共享文件夹、磁盘设为不共享???
  • Delphi建文件夹?????
  • 我用DELPHI做一个MDI窗体,为何子窗体的大小总是不能由程序控制呢
  • 共享文件夹监视
  • 文件夹共享问题

关键词

  • 函数
  • 口令
  • 字母
  • 共享
  • shi50
  • netname
  • pchar
  • mysharestruct
  • 资源
  • servername

得分解答快速导航

  • 帖主:Old_Cow
  • sundayboys
  • tikkypeng

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo