我正在将我的代码转换为使用icacls
,并且当前正在学习本教程:https://ss64.com/nt/icacls.html。
在这部分上,
授予用户jdoe权限,以在其中创建,编辑和删除文件 文件夹C:\ demo \ example \,但防止删除文件夹本身:
::首先删除继承并授予管理员完全控制权 文件夹icacls“ C:\ demo \ example” / inheritance:r / grant:r 管理员:(OI)(CI)(F)
::仅将修改+删除子级授予子文件夹和文件icacls “ C:\ demo \ example” / grant:r ss64Dom \ jdoe:(OI)(CI)(IO)(M,DC)/ T
::授予读/执行,写和附加到顶层文件夹icacls的权限 “ C:\ demo \ example” / grant:r ss64Dom \ jdoe:(RX,WD,AD)
:::如果有任何先前存在的子文件夹,则授予管理员权限完全控制icacls “ C:\ demo \ example” / grant:r管理员:(OI)(CI)(F)/ T
,我能够为第一条指令获得正确的结果,但第二条指令对我却不起作用。我试图用M,DC
来更改F
部分,但效果不佳。
这是我的代码。
Option Explicit
On Error Resume Next
Dim objShell,objFSO, ProgramFiles, X, Y, intRunError, strFolders,strFiles, strNTGroup
Dim strFolder, strFile, strUserName, strEveryone, strDomain
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
strFolders = Array(_
"C:\Users\User\Documents\test_folder3",_
"C:\Users\User\Documents\test_folder2",_
"C:\Users\User\Documents\test_folder")
strFiles = Array(_
"C:\Users\User\Documents\test_file.txt",_
"C:\Users\User\Documents\test_file2.txt")
'User's User Name
strDomain = "Domain"
strUserName = strDomain & "\User"
strEveryone = "Everyone"
WScript.Echo "Set permissions for", strUserName, vbCRLF
'Assign User Permissions to Folders.
For X = 0 to Ubound(strFolders)
strFolder = strFolders(X)
If objFSO.FolderExists(strFolder) Then
WScript.Echo "Folder: " & strFolder
'intRunError = objShell.Run("%COMSPEC% /c Echo Y| cacls " & strFolder & " /E /C /G " & strUserName & ":F", 2, True)
objShell.Run "icacls " & strFolder & " /inheritance:r /grant:r administrators:(OI)(CI)(F)", 2, True
intRunError = objShell.Run("icacls " & strFolder & " /grant:r " & strUserName & ":(OI)(CI)(IO)(M,DC) /T", 2, True)
If intRunError <> 0 Then
Wscript.Echo "Folder ErrCode: " & intRunError
Wscript.Echo "Error assigning permissions for user " _
& strNTGroup & " to folder " & strFolder
End If
Else
WScript.Echo "Folder " & strFolder & " not found"
End If
Next
我正在本地Windows 7 PC上运行它。
更新:
从here,我发现了
仅子文件夹和文件(OI)(CI)(NP)(IO)
与第二条指令要执行的操作相同,因此我尝试使用它。
一开始它什么也没做,但是经过约6次有无(NP)
的编译之后,即使我没有更改代码的权限,用户帐户也获得了完全权限{{ 1}}。
当前,我的文件夹结构是这样的。
(M,DC)
在test_folder上,管理员和用户均具有完全权限。该子文件夹具有管理员和用户,但都没有检查任何权限。