The problem may be simply the result of trying to run the game with setting different from the default monitor refresh rate setting. In another words, BF2 first launch with a 60 Hz screen refresh rate setting, and your default monitor refresh rate is either higher or lower than 60 Hz, which results in a black screen followed by a crash to desktop when attempting to run the game.
The solution is simple, Step 1 check your monitor's refresh rate for Windows 7:
Go to: Control Panel-->Display-->Screen Resolution-->Advanced settings
for Windows Vista:
Go to: Control Panel-->personalization-->Display Settings-->Advanced settings
for Windows XP:
Go to: Control Panel-->Appearance and Theme-->Display
right-click the desktop, and then click Properties
under the Settings tab, and then click Advanced.
under "monitor tab", you can see refresh rate of your monitor.
Step 2 Change your settings in the BF2 profile
Under the directory for Vista and 7:"C:\Users\[User name]\Documents\Battlefield 2\Profiles\[default/0001]" for XP: "C:\Documents and Settings\[username]\My Documents\Battlefield 2\Profiles\[default/0001]"
there is a "video.con" file, open it with notepad, and edit the line "VideoSettings.setResolution 800x600@60Hz"
replace "60Hz" by whatever value your monitor supports.
for example, if your monitor has a refresh rate of 61Hz, the line becomes "VideoSettings.setResolution 800x600@61Hz"
when you're done, save it and you may now try to run the game.
For more info, visit http://www.tweakguides.com/BF2_7.html
Hope this resolves your problem.
Sorry, I can't type chinese.....hope you don't mind reading English.