0

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

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

编辑:

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

编辑2:

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

4

1 回答 1

0

最简单的方法是炮击:

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

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

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
于 2013-09-18T08:55:06.127 回答