CSDN中有几篇文章解决了在WIN2000下设置文件夹共享的方法,但文中虽然有关于共享权限的常量声明,但使用根本无效,就是说无论如何设置,最终结果还是设置了完全共享。 我非常急迫的需要一个设置“只读”共享的方案。如果VB无法解决,用VC的DLL或其它免费控件也可以。 请看清问题:不考虑属性中的NTFS权限,只要运行代码后在“共享”对话框的“权限”栏中体现出“只读”就可以。 拜托各位专家了!
CSDN中有几篇文章解决了在WIN2000下设置文件夹共享的方法,但文中虽然有关于共享权限的常量声明,但使用根本无效,就是说无论如何设置,最终结果还是设置了完全共享。 我非常急迫的需要一个设置“只读”共享的方案。如果VB无法解决,用VC的DLL或其它免费控件也可以。 请看清问题:不考虑属性中的NTFS权限,只要运行代码后在“共享”对话框的“权限”栏中体现出“只读”就可以。 拜托各位专家了!
直接用命令即可shell "net.exe share sdf$=d:\temp /users:3",0
用SetAttr将文件夹设为只读是无法限制登录用户删改内容的!
用net share可以设置完全共享但不能设置只读共享。补充说明:win2000无论是NTFS还是FAT32都能用代码设置文件夹“只读”共享(用户Everyone即可),如果能用类似net这样的命令行或第三方DLL或控件解决也可以。
在注册表中HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan主键下添加一个文件夹,以你的共享名命名,在其下添加下列键值:Flags 0x00000191(这里是关键,表示只读)DWORD
Parm1enc 0000(长度为 0 的二进制值)
Parm1enc 0000(长度为 0 的二进制值)
Parth "C:\yourpath"
Re ""
Type 0x00000000用完删除即可。
最简单的方式是写两段 VBS 代码。或是嵌入 VB 中,或是用 Shell 函数调用。
这段代码我明白,只能实现在98中的共享设置,2000注册表的位置不是这个,有关的注册表无法解密含义,尤其是那个二进制表项,再有用修改注册表的方法必须重新启动计算机才能生效。我对你说的用VBS代码很感兴趣,如果能实现在2000下设置只读共享且不用重启就生效,能否反代码帖上,再次感谢!
Set WSHShell = WScript.CreateObject("WScript.Shell")WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir", "myShare"
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir\Flags", 0x00000191, "REG_DWORD"
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir\Parm1enc", 0, "REG_BINARY"
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir\Parm2enc", 0, "REG_BINARY"
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir\Re", ""
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir\Type", 0, "REG_DWORD"----------------------------------------------------------------------------------------
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")WSHShell.RegDelete "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\myDir"
在2000下这种方法实现不了,因为共享有关的表项和权限(尤其是NTFS分区)是相联系的,注册表中虽然只有几条但因为是二进制的,不好操作,我试过,把不同机器上设置好的表项导出再到其它计算机上导入也无法实现,看来在2000下的表植是与很多软件硬件及其它设置相关的不能简单修改生效。
尽管如此我还是感谢你的参与,再等一等我会给你高手的。谢谢
"test"=hex(7):43,00,53,00,43,00,46,00,6c,00,61,00,67,00,73,00,3d,00,30,00,00,\
00,4d,00,61,00,78,00,55,00,73,00,65,00,73,00,3d,00,34,00,32,00,39,00,34,00,\
39,00,36,00,37,00,32,00,39,00,35,00,00,00,50,00,61,00,74,00,68,00,3d,00,45,\
00,3a,00,5c,00,74,00,65,00,73,00,74,00,00,00,50,00,65,00,72,00,6d,00,69,00,\
73,00,73,00,69,00,6f,00,6e,00,73,00,3d,00,30,00,00,00,52,00,65,00,6d,00,61,\
00,72,00,6b,00,3d,00,00,00,54,00,79,00,70,00,65,00,3d,00,30,00,00,00,00,00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares\Security]
"test"=hex:01,00,04,80,30,00,00,00,4c,00,00,00,00,00,00,00,14,00,00,00,02,00,\
1c,00,01,00,00,00,00,00,14,00,bf,01,13,00,01,01,00,00,00,00,00,01,00,00,00,\
00,01,05,00,00,00,00,00,05,15,00,00,00,83,3d,2b,46,c6,bb,50,7a,82,8b,a6,28,\
f4,01,00,00,01,05,00,00,00,00,00,05,15,00,00,00,83,3d,2b,46,c6,bb,50,7a,82,\
8b,a6,28,01,02,00,00"test"=REG_MULTI_SZ:CSCFlags=0
MaxUses=4294967295
Path=E:\test
Permissions=0
Re=
Type=0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _
("e:\Tools", "FinanceShare", FILE_SHARE, _
MAXIMUM_CONNECTIONS, "Public share for the Finance group.")
Wscript.Echo errReturn