【问题标题】:Automate file sharing自动文件共享
【发布时间】:2013-09-18 07:32:04
【问题描述】:

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

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

编辑:

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

EDIT2:

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

【问题讨论】:

    标签: vbscript file-sharing


    【解决方案1】:

    最简单的方法是脱壳:

    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
    

    【讨论】:

    • 它不一定是 vbscript,我可能应该提到我已经尝试了您在一个简单的批处理文件中建议的第一个选项。问题是,当我从工作组中的另一台计算机打开共享时,仍会提示我输入用户名和密码。我知道如何通过转到高级共享选项并更改“公共文件夹共享”选项来解决此问题,但我不知道如何在命令行或脚本中更改该选项。
    • 我试过你的 vbscript,但我怀疑它与使用 net share 命令相同。我需要更改的选项并非特定于特定共享,因此我认为实际创建共享的东西不是我需要的。
    猜你喜欢
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2017-03-28
    • 1970-01-01
    相关资源
    最近更新 更多