Change the exe creation to put the exe in the tmp folder. I also figured out why those three pywin32 dlls are weirdly special - and have a better workaround.
Make a method to build the exe, and create the exe and service during setUpClass. The service is removed when tearDownClass is called.
Find python27.dll more dynamically.
Make sure it got found.
Add test for error during run method.
Exclude the windows service MainThread from the threads that we try and kill.