The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly

Andrew Matthews picture Andrew Matthews · Jan 12, 2010 · Viewed 41.5k times · Source

I am getting repeated errors about the ReadOnly property on performance counters whenever I try to debug a .NET windows service app. This app works fine on x86 windows vista, or x86 windows 2003. It's just stopped working on my new 64bit dev machine.

I've run the relevant InstallUtil invocations on 64bit and 32bit command line VCVARS.bat, in admin mode. I get no errors setting up the category and each perf counter. But, regardless of whether I set the perf ctrs as readonly or not, I get this:

The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.

UPDATE

I re-installed the machine with a 32bit version of Windows 7, and bizarrely I still get this error. The only thing that has changed is moving from Windows Vista Business to Windows 7 Professional. Does this ring any bells?

Answer

ShuggyCoUk picture ShuggyCoUk · Jan 17, 2010

This is due to the performance counter (or category) not existing, but with a horrible error message.

Take a look in perfmon for the counter, it should be missing on the relevant machines.

I find this happens to the .Net perf counters sometimes (no idea why) but using lodctr1 gets them back. If you indicate which perf counter you are trying to get at we might be able to give you more help.

  1. Note that the example lined is for .Net 1.1, adjust for different frameworks accordingly.