WMIとかADSIとかは情報が少ないですねぇ。
そしていまやFileSystemObjectすらも。
適当に書いておくので切り刻んでください。
'指定されたユーザ名で指定されたパスのフルコントロールアクセス権をつける。
Function SetSecurityHomeDirectory(strComputer , strUser, HomePath)
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
SetSecurityHomeDirectory = False
'アカウント取得
Set wmiAccounts = objWMIService.ExecQuery ( "select * from Win32_Account where Name='" & strUser & "'")
For Each obj in wmiAccounts
Set wmiAccount = obj
Exit For
Next
'Trusteeに変換する
Set wmiTrusteeClass = objWMIService.Get("Win32_Trustee")
Set wmiTrustee = wmiTrusteeClass.spawnInstance_()
Set wmiSID = objWMIService.Get("Win32_SID.SID='" & wmiAccount.sid & "'")
wmiTrustee.domain = wmiSID.ReferencedDomainName
wmiTrustee.name = wmiSID.AccountName
wmiTrustee.sid = wmiSID.BinaryRepresentation
wmiTrustee.sidLength = wmiSID.sidLength
wmiTrustee.sidString = wmiSID.sid
'ACEオブジェクトを作成する
Set wmiACEClass = objWMIService.get("Win32_ACE")
Set wmiACE = wmiACEClass.spawnInstance_()
wmiACE.AccessMask = 1+2+4+8+16+32+64+128+256+65536+131072+262144+524288+1048576 ' 2032127
wmiACE.trustee = wmiTrustee
wmiACE.AceType = 0
wmiACE.AceFlags = 3
'対象フォルダのセキュリティデスクリプタを取得する
Set wmiFileSecSetting = GetObject( "winmgmts:Win32_LogicalFileSecuritySetting.path='" & HomePath & "'")
RetVal = wmiFileSecSetting.GetSecurityDescriptor(wmiSecurityDescriptor)
If ( RetVal <> 0 ) Then
WScript.Echo "GetSecurityDescriptorに失敗しました:" & RetVal
Exit Function
End If
'ディクショナリにDACLを転記する
Set DictACE = CreateObject("Scripting.Dictionary")
For i = LBound(wmiSecurityDescriptor.DACL) to UBound(wmiSecurityDescriptor.DACL)
If ( not wmiSecurityDescriptor.DACL(i).AceFlags and 16 ) Then
Call DictACE.Add( i, wmiSecurityDescriptor.DACL(i) )
End if
Next
'設定する新しいACEオブジェクトを最後に足す
Call DictACE.add( "NewUser", wmiACE )
'DACLに書き戻す
wmiSecurityDescriptor.DACL = DictACE.Items
'対象フォルダのセキュリティデスクリプタを設定する
RetVal = wmiFileSecSetting.SetSecurityDescriptor(wmiSecurityDescriptor)
If ( RetVal <> 0 ) Then
WScript.Echo "SetSecurityDescriptorに失敗しました:" & RetVal
Exit Function
End If
SetSecurityHomeDirectory = True
End Function