Этот механизм будет работать для захвата необработанных исключений в любой среде, включая службы Windows. Однако существуют некоторые ограничения на то, какие исключения могут быть обработаны таким образом. Например, исключение StackOverFlowException может быть необработанным, но по своей природе вы никогда не увидите, чтобы оно проходило через обработчик UnhandledException.
Почему вы думаете, что это не работает? Вы пытались подключиться к процессу с помощью отладчика, включающего исключения первого шанса и посмотреть, что происходит?