How to Resolve SQL Server 2005 and 2008 Performance Counter Collection Problems

Using an elevated administrator command prompt perform the following steps:

Change the path to the BINN directory of the SQL Server instance you desire to correct.
(Ex: C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Binn)

Execute unlodctr <<REGISTERED SERVER NAME>>
For example: unlodctr MSSQL$SQL2008 or unlodctr SQLAgent$SQL2008 or unlodctr MSSQL$SQLEXPRESS

Execute lodctr /T:<<perf-sql* matching the counters you desire to load>>
For example: perf-MSSQL$SQL2008sqlctr.ini or perf-SQLAgent$SQL2008sqlagtctr.ini for SQLAgent, …

NOTE: The /T is important to load the SQL Server performance counter provider as a trusted provider.

Cycle the remote registry service
net stop "Remote Registry"
net start "Remote Registry"

Force a WMI synchronization using:
winmgmt /resyncperfctr "<<PID>>"
where PID is the process id of the WinPriv.exe (you can get this from Task Manager)

Source: http://blogs.msdn.com/psssql/archive/2009/03/03/troubleshooting-sql-server-2005-2008-performance-counter-collection-problems.aspx