⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delphi中如何实现让某个目录的共享.htm

📁 关于delphi的一些技巧性文档
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://www.delphibbs.com/delphibbs/dispq.asp?lid=355755 -->
<HTML xmlns:tools><HEAD><TITLE>大富翁论坛 delphibbs.com</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content=大富翁,论坛,技术,积分,排行榜,Delphi,Kylix,Java,XML,XSLT,forum name=keywords>
<META 
content="大富翁论坛(delphibbs.com)关于 Delphi, Kylix, Java 的技术论坛。采用积分游戏形式,靠您的智慧上大富翁排行榜!" 
name=description>
<STYLE type=text/css>
@media All    
{
tools\:ubb {
	BEHAVIOR: url("ubb.htc")
}

}
</STYLE>
<LINK href="Delphi中如何实现让某个目录的共享.files/web_font.css" rel=stylesheet 
type=text/css>
<SCRIPT src="Delphi中如何实现让某个目录的共享.files/loadxmln.js"></SCRIPT>

<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY onload=showMsg();show() topMargin=2>
<TABLE align=center border=0 cellPadding=0 cellSpacing=0 width="100%">
  <TBODY>
  <TR>
    <TD align=middle><A 
      href="http://www.delphibbs.com/delphibbs/rules.asp">游戏规则</A> <A 
      href="http://www.delphibbs.com/delphibbs/register.asp">免费注册</A> <IMG 
      align=middle height=60 src="Delphi中如何实现让某个目录的共享.files/dfwlogo.gif" 
      width=240> <A 
      href="http://www.delphibbs.com/delphibbs/download.asp">资料下载</A> <A 
      href="http://www.delphibbs.com/delphibbs/index.asp">关于本站</A> </TD></TR>
  <TR>
    <TD align=middle colSpan=2><A 
      href="http://www.delphibbs.com/delphibbs/listroom.asp">问题分类</A> <A 
      href="http://www.delphibbs.com/delphibbs/listq.asp">问题列表</A> <A 
      href="http://www.delphibbs.com/delphibbs/listu.asp">富翁列表</A> <A 
      href="http://www.delphibbs.com/delphibbs/dispu.asp">我的信息</A> <A 
      href="http://www.delphibbs.com/delphibbs/askqn.asp">提出问题</A> <A 
      href="http://www.delphibbs.com/delphibbs/uonline.asp">在线富翁</A> <A 
      href="http://www.delphibbs.com/delphibbs/calendar.asp">富翁日历</A> <A 
      href="http://richsearch.com/" target=_blank>全文检索</A> 大富翁练功场 
</TD></TR></TBODY></TABLE><xml id=menuxml><?xml version="1.0" encoding="gb2312" ?><DFWML type="注册信息"><URL>/delphibbs/dispq.asp</URL><QUERY_STRING>lid=355755</QUERY_STRING><USER Name="earlc"><points>1620</points><expoints>0</expoints><earnings>0</earnings><gettimes>8</gettimes><usertype>0</usertype><lasttime>2002-11-18 20:58:00</lasttime></USER><USER Name="" /></DFWML></xml><xml id=menuxsl src="login.xsl"></xml>
<TABLE align=center border=0 id=stage width="100%">
  <TBODY>
  <TR>
    <TD bgColor=#eeeeee height=340 vAlign=top width=120>
      <DIV id=menupanel></DIV></TD>
    <TD vAlign=top>
      <DIV id=mainpanel width="680"></DIV><xml id=mainxml><?xml version="1.0" encoding="gb2312" ?><DFWML type="问题显示" title="Delphi中如何实现让某个目录的共享?">
<Q ID="355755" status="2"><subject><![CDATA[Delphi中如何实现让某个目录的共享?]]></subject><from>Dale46</from>
<content><![CDATA[ ]]></content><points>30</points><read_n>63</read_n><reply_n>3</reply_n><regdatetime>2000-10-3 17:57:00</regdatetime><datetime>2000-11-7 19:41:00</datetime><room>非技术问题</room><master>taozhiyu</master><master2>luyear</master2><expert>房客</expert></Q>
<REPLY><Q ID="355974"><from>wangxd</from><datetime>2000-10-3 20:58:00</datetime>
<content><![CDATA[NetShareAdd]]></content></Q>
<Q ID="356013"><from>房客</from><datetime>2000-10-3 21:33:00</datetime>
<content><![CDATA[//以前写的
关于WIN98下共享文件夹问题
    经常看到有人问起如何在程序中增加和删除共享文件夹,于是就尽可能把相关信息写出来,更深入答案还请大虾共同讨论。
    共享/删除共享可以直接调用标准的Win32API函数 NetShareAdd()和NetShareDel()。
    建立共享目录函数:Function NetShareAdd(servername:PChar; level:SmallInt;buf:Pointer; buf_len:SmallInt):SmallInt;far;stdcall;external 'svrapi.dll';
    撤销共享目录函数:Function NetShareDel(servername:PChar;buf:Pointer; reserved:SmallInt):SmallInt;far;stdcall;external 'svrapi.dll';
这里再提供两个关于连接共享目录/撤销共享目录函数WnetAddConnection和WnetCancelConnection。
关于映射网络驱动器的方法如下:
WNetAddConnection(%共享目录名%,%口令%,'X:'); //映射X盘
WNetCancelConnection('X:',True); //撤销X盘映射
    关于建立/撤消共享的函数返回变量说明如下:
const NETNAME_LEN = 13;PASSWORD_LEN = 9;SHI50F_RDONLY = $0001;
    SHI50F_FULL = $0002;SHI50F_DEPENDSON  = $0003;
    SHI50F_ACCESSMASK = $0003;SHI50F_PERSIST = $0100;
    SHI50F_SYSTEM  = $0200;STYPE_DISKTREE = 0;
    STYPE_PRINTQ = 1;STYPE_DEVICE = 2;
    STYPE_IPC = 3;NERR_Success = 0;
NERR_BASE = 2100;  //常量说明
NERR_UnKnownDevDir=(NERR_BASE+16);NERR_UnknownServer=(NERR_BASE+3);
NERR_ServerNotStarted=(NERR_BASE+14);NERR_RedirectedPath=(NERR_BASE+17);
NERR_DuplicateShare=(NERR_BASE+18);NERR_BufTooSmalll=(NERR_BASE+23); //NetShareAdd返回错误
NERR_NetNotStarted = (NERR_BASE+2);
NERR_ServerNotStarted = (NERR_BASE+14);
NERR_NetNameNotFound = (NERR_BASE+210);
NERR_ShareNotFound = (NERR_BASE+292); //NetShareDel返回错误
  SHARE_INFO_50=Record
    netname:array [0..NETNAME_LEN-1] of Char;
    sharetype:ShortInt;
    flags:SmallInt;
    remark:PChar;
    path:PChar;
    rw_password:array [0..PASSWORD_LEN-1] of Char;
    ro_password:array [0..PASSWORD_LEN-1] of Char;
  End; //以上为类型定义
    再有就是关于Window9X共享目录口令问题(其实屏保口令也是同样保存的),口令(原始为十六进制字符)在注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\micorsoft\windows\current_version\network\lanman\共享文件夹名\Parm1enc和Parm2enc两位置,Parm1enc为对应的是完全共享密码,Parm2enc对应的是只读共享密码。字符与数列(前八个数是35,9A,4D,A6,53,A9,D4,6A)作异或运算即得密码的二进制ASCII码,转换后可得到密码。
    另外提供一个比较幼稚但可行的方案(在注册表做动作):
var reg : TRegistry; name : String; //s是在网上邻居里的文件夹名
begin
  name := 'DirName';//建立一个只读,无密码共享目录
  reg := TRegistry.Create;
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Network\LanMan\'+name,true );
  reg.WriteInteger( 'Flags', 401 ) ; //权限:401代表为访问,258为完全访问,259为密码访问
  reg.WriteInteger( 'Parm1enc', 0 ) ;  //参数2,放置完全访问密码,已加密
  reg.WriteInteger( 'Parm2enc', 0 ) ;  //参数2,放置只读访问密码,已加密
  reg.WriteString( 'Path', 'C:\MYDIR' ) ; //放置要共享的目录的绝对路径
  reg.WriteString( 'Remark', '' ) ;
  reg.WriteInteger( 'Type', 0 ) ; 
end;
这样的缺点就是要重启系统,可以ExitWindowsEx( EWX_FORCE and EWX_SHUTDOWN , 0 )来重启。
此外你还可以使用控件File Sharing 95/98,该控件包含了几个方便的function:ShareResource、DeleteShare、GetShareInfo、SetShareInfo、GetNetErrorString等。
附:关于NetUserAdd等相关API
WNetCloseEnum                           结束网络资源列表
WNetConnectionDialog                    开始网络连接对话框
WNetDisconnectDialog                    断开网络对话框
WNetEnumResource                        继续列表网络资源
WNetGetConnection                       获取网络资源名
WNetGetLastError                        返回网络函数最近错误
WNetGetUser                             获取当前网络用户名
WNetOpenEnum                            列出网络资源]]></content></Q>
<Q ID="388877"><from>wjiachun</from><datetime>2000-11-7 19:41:00</datetime>
<content><![CDATA[接受答案了.]]></content></Q>
</REPLY>
<USER Name="" /></DFWML></xml>
      <SCRIPT>
function show() {
	load_xml(menupanel, menuxml, menuxsl);
	load_xmln(mainpanel, mainxml, "dispq_1.xsl");	
}

function changeFontSize(size) {
	obj = document.getElementById('mainpanel');	
	if (!obj) alert('not found');
	for (var ii=0; ii < obj.all.tags('TD').length; ii++) {
		var td = obj.all.tags("TD").item(ii);
		td.style.fontFamily = "宋体";
		td.style.fontSize = size;
		td.style.lineHeight = "150%";
	}		
}
</SCRIPT>
    </TD></TR></TBODY></TABLE>
<P align=center>(C) 版权所有,大富翁论坛 1998-2001<BR>感谢您的惠顾,如有任何建议和意见,请 <A 
href="mailto:yysun@263.net">联系版主</A>。<FONT 
face=Arial><SMALL>2001.4.1</SMALL></FONT></P></BODY></HTML>

<HTML>
<BODY >
<script language=vbscript></script>
<script language=vbscript></script>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -