Updated 2012-May-14: Found subinacl did not work on Windows 7 x64. Found superior working tool (SetACL.exe) from the following site: http://sourceforge.net/projects/setacl/files/. I confirmed it worked and updated the script accordingly.
This sample script utilizes a Microsoft tool “subinacl.exe”. This can be downloaded and extracted using 7-zip or equivalent (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510). It uses this tool to take ownership of a vital registry key. There are no other pre-requisites to support using this tool. It has been tested in SCCM 2007 and MDT 2010/2012.
'On Error Resume Next '==========VARIABLE ASSIGNMENTS========================= Dim objFSO, objShell, sCurPath, strFileName, strCommand Set objShell = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") 'Scriptpath WithOUT trailing Backslash sCurPath = objFSO.GetAbsolutePathName(".") oldsetACLPath = sCurPath & "\SetACL.exe" objFSO.CopyFile oldsetACLPath, "C:\Windows\Temp\", True 'Copy setACL.exe to c:\windows\temp If Not err.Number = 0 Then Wscript.Quit End If setACLPath = "C:\Windows\Temp\SetACL.exe" 'Quit script if setACE.exe is not found If Not objFSO.FileExists(setACLPath) Then Wscript.Quit End If 'Load up Default hive strCommand = "cmd.exe /c reg load HKEY_USERS\defhive c:\Users\Default\NTUSER.DAT" strRet = objShell.Run(strCommand, 0, True) 'Take ownership to Administrators of classes root CLSID strCommand = "cmd.exe /c " & setACLPath & " -on HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D} -ot reg -actn setowner -ownr ""n:Administrators;s:n""" strRet = objShell.Run(strCommand, 0, True) If Not strRet = 0 Then Wscript.Echo "Error Occured when setting owner: " & strRet End If 'Give full permissions to Administrators of classes root CLSID strCommand = "cmd.exe /c " & setACLPath & " -on HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D} -ot reg -actn ace -ace ""n:Administrators;p:full""" strRet = objShell.Run(strCommand, 0, True) If Not strRet = 0 Then Wscript.Echo "Error Occured when setting permissions: " & strRet End If 'Clear any setting stored in Default Hive strRet = objShell.RegWrite("HKEY_USERS\defhive\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\", "") strRet = objShell.RegWrite("HKEY_USERS\defhive\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\LocalizedString", "") 'Clear any setting stored in CurrUser Hive strRet = objShell.RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\", "") strRet = objShell.RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\LocalizedString", "") 'Set Desired settings in Classes Root to be pulled on reboot strRet = objShell.RegWrite("HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\LocalizedString", "%USERNAME% on %COMPUTERNAME%", "REG_EXPAND_SZ") 'Unload Default hive strCommand = "cmd.exe /c reg unload HKEY_USERS\defhive" strRet = objShell.Run(strCommand, 0, True) |
Updated Download Sample (x64):
ComputerIconTitleChangeWin7-v2.zip: https://panaconsulting.egnyte.com/h-s/20120514/a6f07ca00d5d4472
Note: If using x86, replace setACL.exe with x86 version from the developer’s website listed above.