自动化文件共享

时间:2013-09-18 07:32:04

标签: vbscript file-sharing

我找到了一些关于如何启用文件共享和共享文件夹的vbscript示例,但是他们离开了"公共文件夹共享"关闭,以便您必须登录,而不是仅允许任何具有网络访问权限的人读/写公共文件夹。

对于我的所有谷歌搜索,我似乎无法找到如何自动化最后一块。 Vbscript或任何可以通过命令行运行的东西都是我这样做的首选方法,但我真的愿意听到任何可以自动化的解决方案。

编辑:

如果它是相关的,我应该指出我将在非域计算机上以管理员权限在本地运行。

EDIT2:

我已经尝试过下面列出的解决方案,但是我需要更改的选项会影响连接到计算机以查看共享列表的能力。它并不特定于特定的份额。

1 个答案:

答案 0 :(得分:0)

最简单的方法就是炮轰:

Set sh = CreateObject("WScript.Shell")
sh.Run "net share sharename=C:\some\folder /grant:Everyone,FULL", 0, True

完全可以在VBScript中完成它,但需要更多的代码。已发布了一个示例脚本here,可以根据您的特定要求进行简化:

path      = "C:\some\folder"
sharename = "name"
comment   = "foo"

Set wmi = GetObject("winmgmts://./root/cimv2")

Set trustee = wmi.Get("Win32_Trustee").SpawnInstance_()
trustee.Domain = Null
trustee.Name   = "Everyone"
trustee.SID    = Array(1,1,0,0,0,0,0,1,0,0,0,0) 'SID S-1-1-0 (binary)

Set ace = wmi.Get("Win32_Ace").SpawnInstance_()
ace.AccessMask = 2032127  'full access
ace.AceFlags   = 3        'object inheritance + container inheritance
ace.AceType    = 0        'allow access
ace.Trustee    = trustee

Set sd = wmi.Get("Win32_SecurityDescriptor").SpawnInstance_()
sd.DACL = Array(ace)

Set share = wmi.Get("Win32_Share")
rc = share.Create(path, sharename, 0, 10, comment, "", sd)

If rc = 0 Then
  WScript.Echo "Folder " & path & " has been shared as " & sharename & "."
Else
  WScript.Echo "Error sharing folder " & path & ": " & rc
End If