I am unaware of a win32 api function/functions used to query the local PC processor\'s current speed. I wish not to use WMI because it seems unlikely to be feasible on all P
A simple google search brought me to this page, which looks like it has 2 different ways to do exactly what you're looking for.
You can call the Windows API function CallNtPowerInformation with the argument ProcessorInformation. It returns a PROCESSOR_POWER_INFORMATION structure which tells you the current and max CPU speed for each of your system's CPUs.
This is only supported on Win32 desktop, not Metro or Windows Phone, though.
You read it from the registry using the usual registry functions
You can (usually) get the processor speed using the QueryPerformanceFrequency function. I'm saying "usually" since this function returns the frequency of the performance timer component of the system, but virtually all current CPU's available operate at the same frequency as the performance timer component.
This function is available since Windows 2000, so chances are good that it's supported on most of todays PCs.