Quote from
http://www.extremetech.com/article2/0,1697,1968998,00.asp
"We ran Battlefield 2 in both its native un-patched state and with the
latest 1.3 patch, and both of them seemed to work just fine. There's one
significant gotcha that crept up several times in our testing: Punkbuster.
The Punkbuster anti-cheating code is a common part of many online games
(particularly shooters), and it works by scanning game files to make sure
they're not compromised. Most Battlefield 2 servers have Punkbuster
enabled, and when we joined one, we got promptly kicked out of the game
with a message saying Punkbuster failed due to "inadequate O/S
privelages."
The solution is simple enough: right-click the BF2 icon, choose
Properties, and then in the Compatibility tab check the box that says "Run
this program as an administrator." After doing this, we encountered no
problems joining any server."