0

私は自分のコードを使用するように変換してicaclsおり、現在このチュートリアルに従っています: https://ss64.com/nt/icacls.html

この部分では、

フォルダー C:\demo\example\ 内のファイルを作成、編集、および削除するための jdoe 権限をユーザーに付与しますが、フォルダー自体は削除しないようにします。

:: 最初に継承を削除し、最上位フォルダ icacls "C:\demo\example" /inheritance:r /grant:r administrators:(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 administrators:(OI)(CI)(F) /T

、最初の命令では正しい結果を得ることができましたが、2 番目の命令ではうまくいきません。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で実行しています。

アップデート:

ここから、私は

サブフォルダとファイルのみ (OI)(CI)(NP)(IO)

これは2番目の命令がやりたいことと同じなので、それを使用しようとしました。最初は何もしませんが、 を使用して、または使用せずにコンパイルを数回、約 6 回行った後(NP)、コードのアクセス許可を変更していなくても、ユーザー アカウントは完全なアクセス許可を取得します(M,DC)

現在、私のフォルダー構造は次のようになっています。

test_folder
|- test_test_file
|- test_test_folder
    |- test_test_test_folder
    |- test_test_test_file

test_folder では、管理者とユーザーの両方に完全な権限があります。サブフォルダーには管理者とユーザーがありますが、どちらにもアクセス許可がチェックされていません。

4

0 に答える 0