1. Home
  2. Docs
  3. Scense Embedded Scripting...
  4. Scense Scripting Examples
  5. Access Rights

Access Rights

Sample scripts for setting access rights on file- and registry objects.

Setting file system rights

This script can be used to set file system rights and log the process in the Scense Executive Log.
This script uses the ‘SubInACL’ resource kit tool.
The group specified at the TaskSet level will be granted rights for the specified file(s) and/or folder(s).

'<ScenseScriptHeader>
' <ScriptParameters>
'  <Parameter Name="Type" ScriptVariableName="vType">
'   <GUI Control="DropDownList" Tooltip="Select the type of object to set access rights to (folder or file)">
'     <ListElements>
'       <Element Name="File" />
'       <Element Name="Folder" />
'     </ListElements>
'   </GUI>   
'  </Parameter>
'  <Parameter Name="Target Path" ScriptVariableName="vTargetPath">
'   <GUI Control="TextBox" />
'  </Parameter>
'  <Parameter Name="Access Rights" ScriptVariableName="vAccessRights">
'   <GUI Control="DropdownList">
'     <ListElements>
'       <Element Name="Full Control" Value="F" />
'       <Element Name="Change" Value="C" />
'       <Element Name="Read" Value="R" />
'       <Element Name="Change Permissions" Value="P" />
'       <Element Name="Take Ownership" Value="O" />
'       <Element Name="Execute" Value="X" />
'       <Element Name="Read Execute" Value="E" />
'       <Element Name="Write" Value="W" />
'       <Element Name="Delete" Value="D" />
'     </ListElements>
'   </GUI>   
'  </Parameter>
'  <Parameter Name="Process sub folders" ScriptVariableName="vSubFolders">
'   <GUI Control="CheckBox" ValueType="Boolean" />
'  </Parameter>
' </ScriptParameters>
'</ScenseScriptHeader>
'<ParameterCodeBlock>
vType = "Folder"
vTargetPath = "C:\Folder1\Folder2"
vSubFolders = False
vAccessRights = "F"
'</ParameterCodeBlock>
'===============================================================================
' Purpose: Set security for Filesystem from taskset
'===============================================================================
'Global variables
    Dim wshshell
    Dim Groepsnaam
    Dim DomeinNaam
    Dim ToolingDirectory
    Dim LogFileName
    Dim InstallLocation
    Dim SystemDrive
    Dim SystemRoot
    Dim InstallType
    Dim CmdLine
    
Sub Scense_Main()
    GroepsNaam = ReplaceVariables("%TasksetReferenceName%")
    DomeinNaam = ReplaceVariables("%UserDomain%")
    ToolingDirectory = ReplaceVariables("%ToolingDirectory%")
    InstallLocation = ReplaceVariables("%InstallLocation%")  
    InstallType = ReplaceVariables("%InstallType%")
    SystemDrive = ReplaceVariables("%SystemDrive%")  
    SystemRoot = ReplaceVariables("%SystemRoot%")  
    
    'Specify LogfileName
    LogFileName = ReplaceVariables("%Temp%") & "\Subinacl.log"
    
    Set WshShell = CreateObject("WScript.Shell")

'-------------------------------------------------------------------------------
    'Use the variables from the header
    vTargetPath = ReplaceVariables(vTargetPath)

    If vType = "File" Then
        SingleFile vTargetPath, vAccessRights    
    Else
        SingleFolder vTargetPath, vAccessRights
        If vSubFolders Then
            SubFolderFiles vTargetPath, vAccessRights
        End If
    End If
'-------------------------------------------------------------------------------
    
    Set wshshell=Nothing
End Sub

Sub SingleFile(File, Permission)
    'Set permissions
    CmdLine = "\subinacl.exe /errorlog=""" & LogFileName & """ /File """ & _
File & """ /grant=""" & DomeinNaam & "\" & GroepsNaam & """=" & Permission
    WriteScenseLog CmdLine
    Call WshShell.Run(ToolingDirectory & CmdLine, 0, True)

    'Save the logging
    WriteFileToScenseLog
End Sub
Sub SingleFolder(Folder, Permission)
    'Set permissions
    CmdLine = "\subinacl.exe /errorlog=""" & LogFileName & _
""" /Subdirectories """ & Folder & """ /grant=""" & _
DomeinNaam & "\" & GroepsNaam & """=" & Permission
    WriteScenseLog CmdLine
    Call WshShell.Run(ToolingDirectory & CmdLine, 0, True)

    'Save the logging
    WriteFileToScenseLog
End Sub
Sub SubFolderFiles(Folder, Permission)
    'Set permissions
    CmdLine = "\subinacl.exe /errorlog=""" & LogFileName & _
""" /Subdirectories """ & Folder & "\*.*"" /grant=""" & _
DomeinNaam & "\" & GroepsNaam & """=" & Permission
    WriteScenseLog CmdLine
    Call WshShell.Run(ToolingDirectory & CmdLine, 0, True)

    'Save the logging
    WriteFileToScenseLog
End Sub

Sub WriteFileToScenseLog
    Dim fso, ts, s

    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' Read the contents of the file.
    Set ts = fso.OpenTextFile(LogFileName, 1, False, -1)
    Do While Not ts.AtEndOfstream 
        s = ts.ReadLine
        If Len(Trim(s)) > 0 Then
            WriteScenseLog s
        End If
    Loop
    ts.Close
    Set ts = Nothing

    'Delete the logfile
    Set f = fso.GetFile(LogFileName)
    f.Delete 
    Set f = Nothing  
    
    Set fso = Nothing
End Sub

Set registry rights

This script can be used to set registry rights and log the process in the Scense Executive Log.
This script uses the ‘SubInACL’ resource kit tool.
The group specified at the TaskSet level will be granted rights to the specified key(s)

'<ScenseScriptHeader>
' <ScriptParameters>
'  <Parameter Name="Target Path" ScriptVariableName="vTargetPath">
'   <GUI Control="TextBox" />
'  </Parameter>
'  <Parameter Name="Access Rights" ScriptVariableName="vAccessRights">
'   <GUI Control="DropdownList">
'     <ListElements>
'       <Element Name="Full Control" Value="F" />
'       <Element Name="Change" Value="C" />
'       <Element Name="Read" Value="R" />
'       <Element Name="Change Permissions" Value="P" />
'       <Element Name="Take Ownership" Value="O" />
'       <Element Name="Execute" Value="X" />
'       <Element Name="Read Execute" Value="E" />
'       <Element Name="Write" Value="W" />
'       <Element Name="Delete" Value="D" />
'     </ListElements>
'   </GUI>   
'  </Parameter>
'  <Parameter Name="Process sub keys" ScriptVariableName="vSubKeys">
'   <GUI Control="CheckBox" ValueType="Boolean" />
'  </Parameter>
' </ScriptParameters>
'</ScenseScriptHeader>
'<ParameterCodeBlock>
vTargetPath = "HKEY_CURRENT_USER\SOFTWARE\Scense"
vSubKeys = False
vAccessRights = "F"
'</ParameterCodeBlock>
'===============================================================================
' Purpose: Set security for registry from taskset
'===============================================================================
'Global variables
    Dim wshshell
    Dim Groepsnaam
    Dim DomeinNaam
    Dim ToolingDirectory
    Dim LogFileName
    Dim CmdLine
    
Sub Scense_Main()
    GroepsNaam = ReplaceVariables("%TasksetReferenceName%")
    DomeinNaam = ReplaceVariables("%UserDomain%")
    ToolingDirectory = ReplaceVariables("%ToolingDirectory%")
    
    'Specify LogfileName
    LogFileName = ReplaceVariables("%Temp%") & "\Subinacl.log"
    
    Set WshShell = CreateObject("WScript.Shell")

'-------------------------------------------------------------------------------
    If vSubKeys Then
        SubKeyReg vTargetPath, vAccessRights
    Else
        SingleReg vTargetPath, vAccessRights
    End If
'-------------------------------------------------------------------------------


'===============================================================================
'The following PACEs are valid For registry key And registry subkey objects 
'  F = Full Control 
'  R = Read 
'  A = Read Control 
'  Q = Query Value 
'  S = Set Value 
'  C = Create SubKey 
'  E = Enumerate Subkeys 
'  Y = NotifY 
'  L = Create Link 
'  D = Delete 
'  W = Write DAC 
'  O = Write Owner 
'===============================================================================
    Set wshshell=Nothing
End Sub

Sub SingleReg(Key,Permission)
    'Set permissions
    CmdLine = "\subinacl.exe /errorlog=""" & LogFileName & """ /KeyReg """ & _
Key & """ /grant=""" & DomeinNaam & "\" & GroepsNaam & _
"""=" & Permission
    WriteScenseLog CmdLine
    Call WshShell.Run(ToolingDirectory & CmdLine, 0, True)

    'Save the logging
    WriteFileToScenseLog
End Sub

Sub SubKeyReg(Key,Permission)
    'Set permissions
    CmdLine = "\subinacl.exe /errorlog=""" & LogFileName & """ /SubKeyReg """ & _
Key & """ /grant=""" & DomeinNaam & "\" & GroepsNaam & _
"""=" & Permission
    WriteScenseLog CmdLine
    Return = WshShell.Run(ToolingDirectory & CmdLine, 0, True)

    'Save the logging
    WriteFileToScenseLog
End Sub

Sub WriteFileToScenseLog
    Dim fso, ts, s

    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' Read the contents of the file.
    Set ts = fso.OpenTextFile(LogFileName, 1, False, -1)
    Do While Not ts.AtEndOfstream 
        s = ts.ReadLine
        If Len(Trim(s)) > 0 Then
            WriteScenseLog s
        End If
    Loop
    ts.Close
    Set ts = Nothing

    'Delete the logfile
    Set f = fso.GetFile(LogFileName)
    f.Delete 
    Set f = Nothing  
    
    Set fso = Nothing
End Sub