Richard, I am having this very same problem, and my machine hasn't magically fixed itself yet.
I've tried all of the recommended steps, numerous times...
Log Contents:
--------------------
[06/21/11 21:45:33] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 2176, function: ExecuteCab
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\Users\RABIDS~1\AppData\Local\Temp\DXAF13.tmp\MDX_1.0.2910.0_x86.cab. The file may be damaged.
--------------------
[06/21/11 21:45:33] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5763, function: DirectXUpdateInstallPlugIn
ExecuteCab() failed.
--------------------
[06/21/11 21:45:34] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Apr2006_XACT_x64.cab. The file may be damaged.
--------------------
[06/21/11 21:45:34] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 21:45:34] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 21:46:52] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Apr2006_xinput_x64.cab. The file may be damaged.
--------------------
[06/21/11 21:46:52] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 21:46:52] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 21:55:16] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Jun2006_XACT_x64.cab. The file may be damaged.
--------------------
[06/21/11 21:55:16] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 21:55:16] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:11:26] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Aug2006_xinput_x64.cab. The file may be damaged.
--------------------
[06/21/11 22:11:26] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 22:11:26] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:11:26] module: dsetup32(Feb 4 2010), file: dsinline.h, line: 302, function: DXRemoveFile
Unable to remove C:\Users\RABIDS~1\AppData\Local\Temp\DX669E.tmp.
--------------------
[06/21/11 22:18:27] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\PROGRA~2\Steam\STEAMA~1\common\METRO2~1\install\DirectX\Aug2006_XACT_x64.cab. The file may be damaged.
--------------------
[06/21/11 22:18:27] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 22:18:27] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:22:01] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\PROGRA~2\Steam\STEAMA~1\common\METRO2~1\install\DirectX\Oct2006_XACT_x64.cab. The file may be damaged.
--------------------
[06/21/11 22:22:02] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 22:22:02] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:29:11] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Dec2006_d3dx10_00_x64.cab. The file may be damaged.
--------------------
[06/21/11 22:29:11] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 22:29:11] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:33:13] module: dxupdate(Nov 19 2010), file: dxupdate.cpp, line: 5738, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\Windows\system32\DirectX\WebSetup\Feb2010_X3DAudio_x64.cab. The file may be damaged.
--------------------
[06/21/11 22:33:13] module: dsetup32(Mar 30 2011), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/21/11 22:33:13] module: dsetup32(Mar 30 2011), file: setup.cpp, line: 1727, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/21/11 22:33:13] module: dsetup32(Mar 30 2011), file: dsinline.h, line: 302, function: DXRemoveFile
Unable to remove C:\Users\RABIDS~1\AppData\Local\Temp\DXD73E.tmp.
--------------------
[06/22/11 00:31:47] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Dec2006_XACT_x64.cab. The file may be damaged.
--------------------
[06/22/11 00:31:47] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 00:31:47] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 00:32:30] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Feb2007_XACT_x64.cab. The file may be damaged.
--------------------
[06/22/11 00:32:30] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 00:32:30] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 09:31:22] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Apr2007_XACT_x64.cab. The file may be damaged.
--------------------
[06/22/11 09:31:22] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 09:31:22] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 16:17:19] module: dxupdate(Feb 4 2010), file: dxupdate.cpp, line: 5725, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through c:\PROGRA~2\steam\STEAMA~1\common\METRO2~1\install\DirectX\Apr2007_xinput_x64.cab. The file may be damaged.
--------------------
[06/22/11 16:17:19] module: dsetup32(Feb 4 2010), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 16:17:19] module: dsetup32(Feb 4 2010), file: setup.cpp, line: 1701, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 16:20:24] module: dxupdate(Nov 19 2010), file: dxupdate.cpp, line: 5738, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\Windows\system32\DirectX\WebSetup\Feb2010_XACT_x64.cab. The file may be damaged.
--------------------
[06/22/11 16:20:24] module: dsetup32(Mar 30 2011), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 16:20:24] module: dsetup32(Mar 30 2011), file: setup.cpp, line: 1727, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 16:24:21] module: dxupdate(Nov 19 2010), file: dxupdate.cpp, line: 5738, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\Windows\system32\DirectX\WebSetup\Jun2010_d3dx10_43_x64.cab. The file may be damaged.
--------------------
[06/22/11 16:24:21] module: dsetup32(Mar 30 2011), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 16:24:21] module: dsetup32(Mar 30 2011), file: setup.cpp, line: 1727, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 16:36:41] module: dxupdate(Nov 19 2010), file: dxupdate.cpp, line: 5738, function: DirectXUpdateInstallPlugIn
Failed API: SetupIterateCabinet()
Error: (5) - Access is denied.
Unable to iterate through C:\Windows\system32\DirectX\WebSetup\Jun2010_d3dx11_43_x64.cab. The file may be damaged.
--------------------
[06/22/11 16:36:41] module: dsetup32(Mar 30 2011), file: dxupdate.cpp, line: 280, function: CSetup::InstallPlugIn
DirectXUpdateInstallPlugIn() failed.
--------------------
[06/22/11 16:36:41] module: dsetup32(Mar 30 2011), file: setup.cpp, line: 1727, function: CSetup::SetupForDirectX
InstallPlugIn() failed.
--------------------
[06/22/11 16:36:41] module: dsetup32(Mar 30 2011), file: dsinline.h, line: 302, function: DXRemoveFile
Unable to remove C:\Users\RABIDS~1\AppData\Local\Temp\DX6D9C.tmp.