http://www.carrona.org
MVP Logo John Carrona
Windows Expert - Consumer
Most Popular Pages:
BSOD Index                         Driver Reference Table (DRT)

Hard Drive Diagnostics        Memory Diagnostics
Quick Links to the different sections:
Family                BSOD                Registry                Diagnostics 

Boot                   Memory             Windows              Misc
RSS Feed Subscribe to the RSS feed
Reset Registry permissions

First, a nice tool that I read about one morning called AccessChk from SysInternals: http://technet.microsoft.com/en-us/sysinternals/bb664922.aspx

Reset Registry Permissions - XP Version:

1 - backup your data and the registry from your XP OS

2 - Reset the Registry Permissions (modified from the 7th post in this link:http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1423928&SiteID=1 ):

-- Download and install the SubInACL utility from this link:http://www.microsoft.com/downloads/details.aspx?FamilyId=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en

--Create a new text file named fix_registry_permissions.bat and add the following text to it (you can copy/paste it) and save it.

cd /d "%programfiles%\Windows Resource Kits\Tools"
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f
subinacl /subdirectories %SystemDrive% /grant=administrators=f /grant=system=f
subinacl /subdirectories %windir%\*.* /grant=administrators=f /grant=system=f

-- Go to Start...Run...and type in "cmd" (without the quotes) and press Enter.  In the black window that opens, type in the complete path to the fix_registry_permissions.bat file (including the filename) and press Enter repair the registry permissions.

3 - Reset the Security settings (from this link: http://support.microsoft.com/kb/313222 ): Go to Start...Run...and type in "cmd" (without the quotes) and press Enter.  Then type this exact command into the CMD window:

secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose

Press enter and let it run. It'll tell you that the task has completed and may give an error that something couldn't be done. It's safe to ignore the error (information about it is contained in the %windir%\Security\Logs\Scesrv.log file).

Reset Registry Permissions - Vista version:

The first step is to ensure you have a good backup - both of your data and of your registry.

Reset the Registry Permissions (modified from the 7th post in this link: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1423928&SiteID=1  ):  

1. Download and install the SubInACL utility from this link (it works in Vista despite the System Requirements stated there): http://www.microsoft.com/downloads/details.aspx?FamilyId=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en

2.Create a new text file named fix_registry_permissions.bat and add the following text to it (you can copy/paste it) and save it.

cd /d "%programfiles%\Windows Resource Kits\Tools"
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f
subinacl /subdirectories %SystemDrive% /grant=administrators=f /grant=system=f
subinacl /subdirectories %windir%\*.* /grant=administrators=f /grant=system=f
 
3. Go to Start and type in "cmd" (without the quotes).  Then right click on the CMD that appears in the top of the search box and select "Run as administrator".  In the black window that opens, type in the path to the fix_registry_permissions.bat file and press Enter

Reset the Security settings (from this link: http://support.microsoft.com/kb/313222 ):  Go to Start and type in "cmd" (without the quotes).  Then right click on the CMD that appears in the top of the search box and select "Run as administrator".  Then type this exact command into the CMD window:

secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose

Press enter and let it run.  It'll tell you that the task has completed and may give an error that something couldn't be done.  It's safe to ignore the error (information about it is contained in the %windir%\Security\Logs\Scesrv.log file).

PART 2 of the original post(s):

I'd also suggest repairing the permissions on your system in the registry.

First, try this tool (the free version) to remove any restrictions that may be in place: http://www.sergiwa.com/en/modules/mydownloads/singlefile.php?cid=2&lid=1

Then, try resetting the registry permissions by following the steps in this link: http://winonline.blogspot.com/2005/11/reset-entire-registry-permissions-to.html

For restoring file associations, I'd suggest the fixes here:  http://www.dougknox.com/xp/file_assoc.htm

Run the fixes for EXE and REG and see if that helps (this usually works at my shop)

For later use - this link will help you to reset the file permissions on your system: http://www.winhelponline.com/blog/reset-the-registry-and-the-file-permissions-in-windows-xp/

Finally, I've had good success with the similar suggestions in this article (in Vista as well as XP):
http://support.microsoft.com/kb/949377#
See Method #1 under Advanced troubleshooting

More info in this post (it has more potential than my stuff - so I'm going to use it in the future):
http://blogs.msdn.com/astebner/archive/2006/09/04/739820.aspx

Finally, here's the code that I use at work:

REM - cd /d "%ProgramFiles%\Windows Resource Kits\Tools"
REM - RUN IN DIRECTORY THAT HAS SUBINACL - above entry REM'd for this
subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f
subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f
subinacl /subdirectories %SystemDrive% /grant=administrators=f /grant=system=f
subinacl /subdirectories %windir%\*.* /grant=administrators=f /grant=system=f
secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose