How to resolve “Access is denied” when install Windows XP Service Pack 3

多次尝试,总算把自己的Windows XP SP2升级到了SP3,在升级过程中碰到了“Access is denied”报错,每次尝试都是升级到一半报错,之后Windows又会回滚所有的改动,然后再重启机器,简直是噩梦一般的体验。

如果在升级Windows XP Service Pack 3的过程中你也碰到了同样的报错,首先要确认是不是错在注册表更新这一步上,检查SP3的升级log,在Windows的安装目录下可以找到svcpack.log这个文件,查看最后的报错信息,如果找到诸如“DoRegistryUpdates failed”这样的报错,那么恭喜你,你通过下面的方法可以解决问题了。

1723.172: DoRegistryUpdates:UpdSpInstallFromInfSection Failed for ProductInstall.GlobalRegistryChanges.Install error: 0x5
1723.172: INF_REGISTRY Failed
1723.172: DoInstallation:DoRegistryUpdates failed
1728.625: Unregistration of sprecovr successful
1729.047: Access is denied.
1884.422: Message displayed to the user: Access is denied.

在微软官方站点上的技术文章949377中提到了这个问题,但是提供了三种解决方法。

方法一:下载完全版的Windows XP Service Pack 3安装程序,一个有316 MB的庞然大物,然而该方法无效。
方法二:重启机器,禁用所有的杀毒软件和防间谍软件,再次重新安装SP3,此方法也同样无效。
方法三:重设注册表和文件权限,重新安装SP3,有效!

方法三比较复杂,简单描述一下。

1. 首先要下载Subinacl.exe程序,该程序用来修改注册表权限设置。

2. 打开记事本,将以下代码copy进去,然后将新文件保存为Reset.cmd。

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
secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose

3. 备份注册表,可以参看技术文章322756.

4. 双击之前保存的Reset.cmd,将会运行大概10-20分钟的时间,如果没有任何报错,command窗口将在运行结束完之后自动关闭。

5. 重新安装Windows XP Service Pack 3

Leave a Reply

Your email address will not be published. Required fields are marked *