VBSCript之GenerateSDDL函数(权限设置)

自己写的一个函数和应用实例,用于设置对象的相关权限,需要的朋友可以参考下
 
复制代码 代码如下:

Function GenerateSDDL(AccountName, AccessFlag, AccessType, AccessMask)
 Dim Accounts, ObjWMI, ObjSID, ObjTru, ObjACE
 Const SET_DACL_PRESENT = &H8004

 Set ObjWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate, (Security)}!.rootcimv2")

 Set Accounts = ObjWMI.ExecQuery("SELECT * FROM Win32_Account WHERE Name='" & AccountName & "'")
 For Each Account In Accounts
  StrSID = Account.SID
 Next
 Set ObjSID = ObjWMI.Get("Win32_SID.SID='"& StrSID &"'")

 Set ObjTru = ObjWMI.Get("Win32_Trustee").SpawnInstance_()
 ObjTru.Domain  = ObjSID.ReferencedDomainName
 ObjTru.Name   = ObjSID.AccountName
 ObjTru.SID   = ObjSID.BinaryRepresentation
 ObjTru.SidLength = ObjSID.SidLength
 ObjTru.SIDString = ObjSID.Sid

 Set ObjACE = ObjWMI.Get("Win32_ACE").SpawnInstance_()
 ObjACE.Trustee   = ObjTru
 ObjACE.AceType   = AccessType
 ObjACE.AccessMask  = AccessMask
 ObjACE.AceFlags  = AccessFlag

 Set GenerateSDDL = ObjWMI.Get("Win32_SecurityDescriptor").SpawnInstance_()
 GenerateSDDL.Owner   = ObjTru
 GenerateSDDL.DACL   = Array(ObjACE)
 GenerateSDDL.ControlFlags = SET_DACL_PRESENT
End Function

例子:

复制代码 代码如下:

strPath = "d:1.txt"
Set ObjWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate, (Security)}!.rootcimv2")
Set ObjSec = ObjWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & strPath & "'")
ObjSec.SetSecurityDescriptor(GenerateSDDL("everyone", &H0, &H1, &H100E0))

文章来源: http://www.enun.net/?p=1255

时间: 2024-10-28 16:10:34

VBSCript之GenerateSDDL函数(权限设置)的相关文章

VBSCript之GenerateSDDL函数(权限设置)_vbs

复制代码 代码如下: Function GenerateSDDL(AccountName, AccessFlag, AccessType, AccessMask) Dim Accounts, ObjWMI, ObjSID, ObjTru, ObjACE Const SET_DACL_PRESENT = &H8004  Set ObjWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate, (

权限设置问题。

问题描述 有一个后台,有四中级别的权限,有三个模块需要权限设置,每一个模块有五种权限.怎么做?用GridView可以吗?有哪位大侠做个,麻烦指点一下 解决方案 解决方案二:你这个不是权限问题!应该是模块与关系的建立已经设定联合查询后.GridView绑定就行了解决方案三:你可以根据登陆用户不同的权限,来调用不同的模块,或者是函数,或者是存储过程解决方案四:不是这个意思,我的意思是,比如这样权限名培训权限管理权限删除权限黑单选1单选2黄单选1单选2红单选1单选2蓝单选1单选2无单选1单选2我如何把

oracle-oracl 存储过程 跨表查询结果集无法用游标输出 是权限设置问题吗?

问题描述 oracl 存储过程 跨表查询结果集无法用游标输出 是权限设置问题吗? a用户下存储哦过程 查询B用户下表数据 用游标输出 会提示PL/SQL: ORA-00942: 表或视图不存在 事实 所有不属于自己用户下的都不可以用..包括函数 游标输出结果集会提示表示服不可用 解决方案 只要a有权限访问B的表, 只要通过 B.表名 就可以访问啊

mysql 用户管理和权限设置

用户管理 mysql>use mysql; 查看 mysql> select host,user,password from user ; 创建 mysql> create user  zx_root   IDENTIFIED by 'xxxxx';   //identified by 会将纯文本密码加密作为散列值存储 修改 mysql>rename   user  feng  to   newuser://mysql 5之后可以使用,之前需要使用update 更新user表 删除

Android6.0仿微信权限设置_Android

Android 6.0版本对于程序员兄弟来说最不友好的就是权限的问题,动态权限的设置曾经让我很苦恼,目前大部分关于6.0权限设置的框架基本都是一次性访问多个权限(EasyPermissions),这样导致的问题就是如果我们申请了三种权限,而用户只同意了其中一种,下次再申请权限又是一次性申请三种,很不方便对于用户来说很不友好,偶然情况下发现了安卓猴的这篇文章, http://sunjiajia.com/2016/04/19/android-m-permissions/ 在此基础上做了修改,就实现了

windows 服务器安全之磁盘访问权限设置[完整篇]_win服务器

asp.net服务器安全之磁盘访问权限设置 硬盘或文件夹: C:\ D:\ E:\ F:\ 类推   主要权限部分: 其他权限部分: Administrators 完全控制   无如果安装了其他运行环境,比如PHP等,则根据PHP的环境功能要求来设置硬盘权限,一般是安装目录加上users读取运行权限就足够了,比如c:\php的话,就在根目录权限继承的情况下加上users读取运行权限,需要写入数据的比如tmp文件夹,则把user的写删权限加上,运行权限不要,然后把虚拟主机用户的读权限拒绝即可.如果

Android6.0仿微信权限设置

Android 6.0版本对于程序员兄弟来说最不友好的就是权限的问题,动态权限的设置曾经让我很苦恼,目前大部分关于6.0权限设置的框架基本都是一次性访问多个权限(EasyPermissions),这样导致的问题就是如果我们申请了三种权限,而用户只同意了其中一种,下次再申请权限又是一次性申请三种,很不方便对于用户来说很不友好,偶然情况下发现了安卓猴的这篇文章, http://sunjiajia.com/2016/04/19/android-m-permissions/ 在此基础上做了修改,就实现了

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法.  Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行.   举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmo

服务器安全之iis权限设置篇

  IIS Web 服务器的权限设置有两个地方,一个是 NTFS 文件系统本身的权限设置,另一个是 IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上.这两个地方是密切相关的.下面以实例的方式来讲解如何设置权限. IIS 下网站->站点->属性->主目录(或站点下目录->属性->目录)面板上有: 脚本资源访问 读取 写入 浏览 记录访问 索引资源   6 个选项.这 6 个选项中,"记录访问"和&q