vbs使用WMI修改文件与文件夹 NTFS权限的代码
C-读写,C) 0 Then objNewACE.AccessMask = 1245631 If InStr(UCase(strAccess),2-路径不存在 'strUser表示用户名或组名 'strPath表示文件夹路径或文件路径 'strAccess表示允许权限设置的字符串。
这时所有权限都不设置 '当自动继承位置位为0时,strPath, 使用WMI修改文件与文件夹的NTFS权限,自动继承位置位 End If objOldDacl = objSD.Dacl ReDim objNewDacl(0) Set objNewDacl(0) = objNewACE If IsArray(objOldDacl) Then '权限为空时objOldDacl不是集合不可遍历 For Each objACE In objOldDacl If (blSE_DACL_AUTO_INHERITED=False And blInherit=True) Or ((objACE.AceFlags And 16)0 And (blInherit=True) Or (LCase(objACE.Trustee.Name)=LCase(strUser))) Then 'Do nothing '当自动继承位置位为0时即使时继承的权限也会显示为非继承,R) 0 Then objNewACE.AccessMask = 1179817 If InStr(UCase(strAccess)。
字符串中带有相应字母表示允许相应权限: R-读,blInherit) Set objWMIService = GetObject(winmgmts:\\.\root\Cimv2) Set fso = CreateObject(Scripting.FileSystemObject) '得到Win32_SID并判断用户/组/内置账户是否存在 Set colUsers = objWMIService.ExecQuery(SELECT IT之家 FROM Win32_Account WHERE) If colUsers.count0 Then For Each objUser In colUsers strSID = objUser.SID Next Else AddPermission = 1 Exit Function End If Set objSID = objWMIService.Get(Win32_SID.SID='strSID') '判断文件/文件夹是否存在 pathType = If fso.fileExists(strPath) Then pathType = FILE If fso.folderExists(strPath) Then pathType = FOLDER If pathType = Then AddPermission = 2 Exit Function End If '设置Trustee Set objTrustee = objWMIService.Get(Win32_Trustee).SpawnInstance_() objTrustee.Domain = objSID.ReferencedDomainName objTrustee.Name = objSID.AccountName objTrustee.SID = objSID.BinaryRepresentation objTrustee.SidLength = objSID.SidLength objTrustee.SIDString = objSID.Sid '设置ACE Set objNewACE = objWMIService.Get(Win32_ACE).SpawnInstance_() objNewACE.Trustee = objTrustee objNewACE.AceType = 0 If InStr(UCase(strAccess),R,需要置位 End If If blInherit = True Then objSD.ControlFlags = (objSD.ControlFlags And HEFFF) '阻止继承复位 Else objSD.ControlFlags = (objSD.ControlFlags Or H1400) '阻止继承位置位,F) 0 Then objNewACE.AccessMask = 2032127 If pathType = FILE And blInherit = True Then objNewACE.AceFlags = 16 If pathType = FILE And blInherit = False Then objNewACE.AceFlags = 0 If pathType = FOLDER And blInherit = True Then objNewACE.AceFlags = 19 If pathType = FOLDER And blInherit = False Then objNewACE.AceFlags = 3 '设置SD Set objFileSecSetting = objWMIService.Get(Win32_LogicalFileSecuritySetting.Path='strPath') Call objFileSecSetting.GetSecurityDescriptor(objSD) blSE_DACL_AUTO_INHERITED = True If (objSD.ControlFlags And H400) = 0 Then blSE_DACL_AUTO_INHERITED = False objSD.ControlFlags = (objSD.ControlFlags Or H400) '自动继承位置位,F-完全控制 'blInherit表示是否继承父目录权限.True为继承,strAccess,True) '---------- '用于给文件和文件夹添加一条权限设置.返回值: 0-成功,1-账户不存在,代码如下: 复制代码 代码示例: strUser = guests strPath = D:\\abc.txt RetVal = AddPermission(strUser,在继承父目录权限的情况下不设置继承的权限.账户和需要加权限的账户一样时不设置权限 Else Ubd = UBound(objNewDacl) ReDim preserve objNewDacl(Ubd+1) Set objNewDacl(Ubd+1) = objACE End If Next End If objSD.Dacl = objNewDacl '提交设置修改 Call objFileSecSetting.SetSecurityDescriptor(objSD) AddPermission = 0 Set fso = Nothing End Function ,strPath,False为不继承 Function AddPermission(strUser,如果是刚创建的目录或文件该位是不置位的,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jq/jc/9262.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
PHP识别相片是否是颠倒的
时间:2020-12-28
-
python编程有哪些ide
时间:2020-12-28
-
python开发工程师是做什么
时间:2020-12-28
-
php构造函数的作用
时间:2020-12-28
-
php怎么跟数据库连接
时间:2020-12-28
-
php实现顺序线性表
时间:2020-12-28
-
Python多重继承中的菱形继
时间:2020-12-28
-
php中break的作用
时间:2020-12-28
热门文章
-
php中常用的正则表达式使用方法
时间:2020-12-25
-
asp与php区别是什么?
时间:2020-12-27
-
PHP识别相片是否是颠倒的,并且重新摆正
时间:2020-12-28
-
Yii授权之基于角色的存取控制 (RBAC)
时间:2020-12-23
-
php的一键安装包有哪些 php环境搭建
时间:2020-12-19
-
php实现对图片对称加解密(适用身份证加
时间:2020-12-25
-
php如何理解面向对象
时间:2020-12-28
-
超详细分析php docker的原理及作用
时间:2020-12-27
-
Python控制Excel实现自动化办公
时间:2020-12-23
-
session的作用是什么
时间:2020-12-25
