If you just want an upper bound (approximation):
fsutil fsinfo ntfsinfo C: in the command prompt, read the
Mft Valid Data Length value, and divide it by 1024. This number could possibly be way too big, but it can't be too small.
If you need an exact value, there are faster ways but you'd need to program something (I don't know of any programs out there that precisely do this)... you'd need to read the $MFT file and parse it by hand, then figure out which ones are file entries and which ones are non-file entries... it's dramatically faster than Windows's "top-down" approach (because building the hierarchy bottom-up uses only the MFT and nothing else), but it's in no way easy.
If you're a programmer but you want a less painful (although slower) way, you could also just write a program that calls
NtQueryDirectoryFile to traverse the folders instead of the default
FindNextFile functions... it can be a lot faster but a bit more tricky.
Just be aware that the notion of a "file" itself is actually quite tricky. It's quite possible (and Windows even does this by default) to have multiple hardlinks to the same file, and both of them are just as "real" as any other file... do you count them once or twice?
Or you can have junctions or symbolic links that point to other places... should those be counted or no?
It's not a clear-cut process as it might seem at first, so be aware of that.
Hope that helped..
You could run
robocopy /L /E C:\ C:\Temp > "%Temp%\Temp.log"
and then inspect the "Files" statistic that's shown. :P