管理文件共享上的远程 DACL:Win32_ACE 到 Win32_Share

2023-12-04

目标:向现有文件共享添加本地用户帐户共享级读/写权限。

我在开发这个方面遇到了障碍。显然,Microsoft 希望您将用户的 ACE 添加到 DACL,然后返回到共享的安全描述符中。 (1). (不,NET SHARE /ADD 不适用于现有共享,我很惊讶。)

理论上这应该很简单,但我主要担心的是做错了并失去现有的共享权限(大量网络用户,特定组)。该解决方案需要扩展到几千个共享。我正在开发解决方案来输出有关现有 DACL 的数据,以防我需要退出。我应该编写代码来解释该日志,并准备好在出现任何问题时将它们全部添加回来。

目前我正在使用 VBscript——我觉得 PowerShell 可能是一种更强大的方法,但 VBscript/WMI 是已知的数量。

研究: (1)http://blogs.msdn.com/b/helloworld/archive/2008/07/22/editing-share-permission.aspx


将现有 ACE 复制到数组中:

rc = shareSec.GetSecurityDescriptor(sd)
ReDim acl(UBound(sd.DACL)+1)  '+1 for the new ACL we're going to add
For i = 0 To UBound(sd.DACL)
  Set acl(i) = sd.DACL(i)
Next

将新 ACE 添加到该数组:

Set acl(UBound(acl)) = NewACE(NewTrustee(username, domain), 2032127)

功能NewTrustee() and NewACE()封装创建受托人和 ACE 的指令。该数字是访问掩码完全控制.

创建一个新的安全描述符并将其分配给共享:

Set sd = wmi.Get("Win32_SecurityDescriptor").SpawnInstance_
sd.ControlFlags = flags
sd.DACL = acl
rc = shareSec.SetSecurityDescriptor(sd)

Check 这一页有关安全描述符、受托者、ACL 和 ACE 的更多详细信息。


完整脚本:

Const FullControl = 2032127

' modify these variables according to your requirements:
computer = "."
share    = "..."
username = "..."
domain   = CreateObject("WScript.Network").UserDomain

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!//" _
  & computer & "/root/cimv2")
Set shareSec = GetObject("winmgmts:Win32_LogicalShareSecuritySetting.Name='" _
  & share & "'")

Function NewTrustee(name, domain)
  Dim trustee, account

  Set trustee = wmi.Get("Win32_Trustee").SpawnInstance_
  trustee.Name   = name
  trustee.Domain = domain
  Set account = wmi.Get("Win32_UserAccount.Domain='" & domain & "',Name='" _
    & name & "'")
  trustee.Properties_.Item("SID") = wmi.Get("Win32_SID.SID='" & account.SID _
    & "'").BinaryRepresentation

  Set NewTrustee = trustee
End Function

Function NewACE(trustee, permissions)
  Dim ace : Set ace = wmi.Get("Win32_Ace").SpawnInstance_
  ace.Properties_.Item("AccessMask") = permissions
  ace.Properties_.Item("AceFlags") = 3
  ace.Properties_.Item("AceType") = 0
  ace.Properties_.Item("Trustee") = trustee
  Set NewACE = ace
End Function

' copy existing ACEs
rc = shareSec.GetSecurityDescriptor(sd)
flags = sd.ControlFlags
ReDim acl(UBound(sd.DACL)+1)  '+1 for the new ACL we're going to add
For i = 0 To UBound(sd.DACL)
  Set acl(i) = sd.DACL(i)
Next
Set sd = Nothing

' add new ACE
Set acl(UBound(acl)) = NewACE(NewTrustee(username, domain), FullControl)

' prepare new security descriptor
Set sd = wmi.Get("Win32_SecurityDescriptor").SpawnInstance_
sd.ControlFlags = flags
sd.DACL = acl

' assign new security descriptor
rc = shareSec.SetSecurityDescriptor(sd)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

管理文件共享上的远程 DACL:Win32_ACE 到 Win32_Share 的相关文章

  • 如何使用.NET设置文件夹权限?

    是否可以使用小型 NET 页面来设置其所在服务器上某些文件夹的文件夹权限 可用于此目的的代码或对象是什么 我使用的是 Windows Server 2003 基本上我想使用 GET 或 POST 访问页面并运行它并检查和 或更新文件夹的权限
  • VBScript 宏 getParentFolder 名称

    我正在尝试创建一个 vbscript 宏 它将获取存储宏的文件夹位置并将输出文件创建到同一文件夹中 我正在使用下面的代码 但它没有获得正确的位置 Set obj1FSO CreateObject Scripting FileSystemOb
  • 如何从 vbs 脚本发送电子邮件

    如何从 vbs 脚本发送电子邮件 在无法连接到互联网的计算机上 位于我的非互联网区域 我通过谷歌搜索将以下内容整合在一起 但似乎需要调用微软的服务器 如果我无法访问 microsoft com 该怎么办 sch http schemas m
  • ADO 参数化查询不返回任何结果

    我正在使用此查询从经典 asp 页面中的 vbscript 获取一些结果 但它不会返回任何值 该页面是空白的 也没有错误 请问有什么建议吗 dim cmd admin no admin no request QueryString admi
  • Windows 共享文件夹的 URL [重复]

    这个问题在这里已经有答案了 有没有办法合并一个working将 Windows 共享文件夹链接到 HTML 页面 例如 链接到 server folder path 为简单起见 假设该页面将在 Windows 计算机上打开 并且在同一 In
  • 如何在.net core或.net standard项目中运行VBScript?

    我知道这是死胡同而且愚蠢的想法 但仍然 您知道在 Net Core 或 Net Standard 项目中运行 VBScript 的任何 nuget 或解决方法吗 我尝试使用 ClearScript V8 nuget https www nu
  • VBS 脚本 getElementbyID 错误(自动登录脚本)

    我正在编写适用于不同站点的 vbs 脚本文件 但我正在为我的大学网页编写用于互联网页面登录的自动登录脚本 所以我一直在工作直到填写用户名和密码 但我无法让它点击登录 这是大学登录的链接 我不确定您是否可以从网络外访问它 请注意编辑请不要将其
  • 实现共享功能的标准方法

    我需要在 iOS 中实现 共享为 功能 例如 一个按钮名为 共享为 并弹出一个对话框 其中包括电子邮件 短信 Facebook Twitter 等项目 我想知道是否有一个标准对话框可以完成这项工作 经过搜索 我发现在 iOS6 中使用 UI
  • 如果 vbs 脚本崩溃,请重新启动它

    我正在尝试制作一个 vb 脚本 如果它崩溃 它将重新启动另一个 vb 脚本 我搜索了又搜索 但我得到的只是如何重新启动程序 并且由于 vb 脚本是后台进程 因此当您在 Win32 Process 中搜索时它不起作用 这是我的代码 set S
  • IOS Safari URL UTI 分享表

    我正在尝试使用 safari 共享按钮和共享表将当前 URL 从 safari 传递到我的应用程序 我希望它进入我的应用程序 而不是让它成为共享扩展 在 Safari 中 共享表不显示我的应用程序 我已注册以下文档类型 UTI 但未成功 p
  • 如何远程获取系统的网络共享和连接?

    我正在寻找一种远程获取类似于以下控制台应用程序的信息的方法 net use 净份额 网络统计 ano 但是 我需要能够在系统上运行第三方应用程序的情况下执行此操作 这有效地排除了使用 psexec 远程执行命令 因为 psexec 将作为服
  • CDO.消息编码问题

    我们目前正在将邮件递送系统更改为仅使用UTF 8 发件人姓名似乎有问题 当电子邮件包含非 ASCII 字符 希伯来语 时 主题和正文呈现正常 但发件人姓名 如出现在我的 gmail 帐户中 变为 有一行代码 myMail BodyPart
  • 使用 javascript 获取选择标签的名称

    我在任何地方都没有找到这个问题 所以我将其发布在这里 我有一堆选择标签 部分使用 VBScript 命名 我希望能够获取从 javascript 中的 onchange 事件调用的选择标签的名称 这是代码
  • 为什么根据检索顺序从 ADO Recordset 中获取空值而不是正确值? (DB表有NTEXT值)

    我有一个数据库表有两个datetime我需要使用 VBScript 从 ASP 页面读取可为空的列 这是我写的代码 Set cmd Server CreateObject ADODB Command With cmd ActiveConne
  • 使用 qtp 功能单击特定链接

    我想通过创建一个在操作中调用的函数来自动执行 Flipkart 的登录过程 Function Website this is the function Systemutil Run iexplore exe http www flipkar
  • Powershell 设置盖子关闭操作

    我想自动设置 Windows 7 在我的工作笔记本电脑上合上盖子时所执行的操作 因为每次登录时都会通过 GPO 重置该操作 我知道我可以在批处理脚本中使用 powercfg 命令来实现此目的 powercfg setacvalueindex
  • 如何在多个进程之间共享字典?

    我想知道是否可以跨多个进程共享字典的内容 我一直在看http docs python org 2 library multiprocessing html shared ctypes objects http docs python org
  • CreateObject() vbs 的对象列表

    我喜欢脚本 我不喜欢重新发明轮子 所以我喜欢 CreateObject您能给我指出一个可在 VBScript 上使用的广泛且有用的对象列表并附上简短说明吗 确实 我还没有找到超过 50 个的网站 提前致谢 我自己并不知道有这样的列表 但我知
  • VBscript 以提升的权限运行 bat 文件

    这是我的bat文件 REG DELETE HKLM Software Microsoft Windows CurrentVersion WindowsUpdate v SusClientId f REG DELETE HKLM Softwa
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec

随机推荐

  • 在 fb_var_screeninfo 中设置 yres_virtual 时出现无效参数错误

    我正在尝试为 Linux 创建一个直接写入帧缓冲区 dev fb0 的应用程序 为了使其成为双缓冲 我尝试使虚拟屏幕成为屏幕大小的两倍 这是我写的程序 struct fb var screeninfo screeninfo var stru
  • nhibernate 审核更新事件

    以下代码适用于插入但适用于更新modifier从未设置过 有什么想法吗 预更新代码正在运行 并将状态和实体值正确设置为所需值 但是 当查看生成的 sql 时 nhibernate 不会在更新查询中包含该字段
  • 我无法使用 iTextSharp 将“Page X of Y”等内容插入到我的 PDF 页脚中

    我是 iTextSharp 的新手 遇到以下情况 我正在创建一个包含页眉和页脚的 PDF 对于页眉和页脚的创建 我正在使用扩展的类 PdfPageEventHelper我已经覆盖了OnStartPage 和OnEndPage 方法 效果很好
  • 如何使用 PHP、MySql 借助 json 验证 Android 中的用户登录凭据

    我是安卓开发新手 我想使用 php mysql 和 json 进行登录验证 我只负责 PHP MySql 和 json 部分 如果用户在android应用程序中输入用户名和密码 那么它需要使用PHP和Mysql检查用户表 并且只需要使用js
  • MySQL根据最新时间戳选择记录组

    我有一个每隔几个小时运行一次的例程 它在用于记录的表中创建多个条目 我需要做的是选择所有最新的记录时间戳具有共同的帐户 ID 像这样的东西 SELECT FROM TABLE logs WHERE ACCOUNT ID 12345 ORDE
  • MYSQL/PHP 查找与给定项目关联的最常见项目

    我有数千个用户生成的物品愿望清单 桌子是这样的 collectionId itemdId user id 123 2345 1 123 3465 1 123 876 1 lt 123 567 1 123 980 1 lt 777 980 2
  • TypeScript 错误:重复的标识符“LibraryManagedAttributes”

    编译失败 moonholdings io node modules types react dom node modules types react index d ts 2312 14 重复的标识符 LibraryManagedAttri
  • 安装 mediapipe 库后 cv2 不起作用

    我想使用 python 制作 handtracker 程序 但教程告诉我安装 mediapipe 库 然后我安装了它 之前使用cv2传输我的相机是可以的 但是安装mediapipe之后 cv2不起作用 这里是消息 gt gt gt impo
  • 对已经排序的数组进行快速排序

    在这个问题中 https www quora com What is randomized quicksort 阿莱霍 豪斯纳 Alejo Hausner 说道 最坏情况下快速排序的成本 that 讽刺的是 如果您将快速排序应用于已经排序的
  • 自动生成 .NET 故障转储

    我知道如何使用 ADPlus 或 DebugDiag 生成故障转储文件 但我想知道是否有一种方法可以在客户的计算机上执行此操作而无需安装这些工具 具体来说 我希望能够配置我的应用程序 例如 使用注册表值 在发生严重故障时生成故障转储 更具体
  • 如何删除字符串的一部分?

    假设我有test 23我想删除test 我怎么做 前面的前缀 可以换 我最喜欢的方法是 拆分和弹出 var str test 23 alert str split pop gt 23 var str2 adifferenttest 153
  • 在 Eclipse Android 中导入 JAR (JAudioTagger)

    我正在开发一个加载 mp3 文件的歌曲数据的程序 我正在尝试导入 JAudioTagger 来帮助加载歌曲信息 JAudioTagger 是一个 jar 文件 我进入导入窗口 但面临许多我不确定的导入选项 看起来有三种可行的选择 EJB J
  • 如何创建项目模板

    关于自定义模板的主题 我正在自学如何使用 xcode 7 和 Objective C 来做到这一点 但我陷入了困境 到目前为止 通过阅读 S O 上的其他帖子我通过复制单视图应用程序并将其放入 xcode 包的正确目录中 成功创建了一个自定
  • mocha中的异步函数 before() 总是在 it() 规范之前完成?

    我有一个回调函数before 这是为了清理数据库 一切都在before 保证在之前完成it 开始 before function db collection user remove function res is it guaranteed
  • 如何在R中获得与Stata中相同的AIC和BIC值?

    假设我有一个非常简单的模型 library foreign smoke lt read dta http fmwww bc edu ec p data wooldridge smoke dta smoking reg lt lm cigs
  • 在 C 中如何将函数作为参数传递?

    我想创建一个函数 该函数对一组数据执行通过参数传递的函数 在 C 中如何将函数作为参数传递 宣言 采用函数参数的函数原型如下所示 void func void f int 这表明参数f将是一个指向函数的指针 该函数具有void返回类型并且需
  • 获取最后更新的数据 - Codeigniter

    我在 codeigniter 工作 我有一个方案表 我的问题是我想显示每个方案的最后更新数据 我不知道该怎么做 请帮忙 my table scheme code updated on scheme name 1 2015 04 13 One
  • 使用ejabberd时有没有办法打包msg?

    我正在测试 ejabberd 的 mucroom 测试客户是Tsung 测试条件 一台ejabberd服务器 4核16G RAM 3000 个用户加入 1 个 mucroom 用户1分钟内随机发送一条消息 每个用户发送5条消息 服务器操作系
  • 将网页另存为PDF到指定目录

    我有它会打开 Internet Explorer 给用户 另存为 框 然后退出 但是 我更希望用户不必导航到正确的文件夹 而是目录来自工作表中的单元格并将网页另存为 PDF 我已经安装了完整的 Adob e 代码 Sub WebSMacro
  • 管理文件共享上的远程 DACL:Win32_ACE 到 Win32_Share

    目标 向现有文件共享添加本地用户帐户共享级读 写权限 我在开发这个方面遇到了障碍 显然 Microsoft 希望您将用户的 ACE 添加到 DACL 然后返回到共享的安全描述符中 1 不 NET SHARE ADD 不适用于现有共享 我很惊