I tried doing this but Windows says the file isn't playable. Playing it in VLC does work.
ffmpeg -i in.mp4 -f mpeg -vcodec mpeg2video out.m2v
Windows Media Player uses DirectShow, which is a system of filters connected together depending on what is fed into them. If you want to play any format using Windows Media Player, it would be best to install a set of free open-source DirectShow filters known collectively as "LAV Filters", written and maintained by Nevcairiel. Its latest installer release can be found on its Github releases page, here: https://github.com/Nevcairiel/LAVFilters/releases
However, if you're targeting default Windows installations, one of the highest-quality lossy codecs that Windows supports with its default DirectShow filters is Windows Media Video. Here's how to transcode a Windows Media Video file conveniently with ffmpeg using Windows Media Video 8.
ffmpeg -i input.mp4 -q:a 2 -q:v 2 -vcodec wmv2 -acodec wmav2 output.wmv
There is a later version of Windows Media Video, called Windows Media Video 9, but FFmpeg doesn't support encoding Windows Media Video 9; only decoding. For encoding that, you would be more likely to find success using a Microsoft tool.
I have one final note I'd like to include. Ideally, unless your source video is lossless, you shouldn't be transcoding video to a lossy format such as Windows Media Video 8 if you can help it. That introduces generational loss, which is a serious problem for archived video. Instead, try to ensure your target playback system can play the original lossy-codec-encoded video or make sure you're encoding your lossy video from a lossless source.