A maneira mais "robusta" de determinar se um serviço pode ser interrompido ou eliminado é analisar seu código-fonte para ver se ele lida com um evento de desligamento ou parada corretamente.
Em seguida, o melhor é anexar a ele com um depurador e definir pontos de interrupção em eventos importantes.
Você não nos diz o que este serviço faz ou como funciona, mas se você quiser ver qual arquivo manipula o processo foi aberto durante a operação normal, na minha opinião o Process Explorer da Sysinternals é a maneira mais fácil de fazê-lo. Você também pode ver a atividade do sistema de arquivos ocorrendo em tempo real com o Process Monitor, filtrando os resultados para o processo que você deseja ver.
Se o serviço foi escrito corretamente, ele anulará todos os seus recursos de uma forma graciosa antes que o processo saia (quando encerrado através do gerenciador de serviços) ou pelo menos aqueles que levariam à perda de dados se não foram.
sc query your-service
dará a você o que o Service Manager considera que o serviço é capaz, mas, novamente, é como o serviço foi escrito para determinar se a funcionalidade foi implementada corretamente ou não.
Editar: que seu serviço trava quando você tenta pará-lo me diz que não foi escrito corretamente.
Edit: Ah, e uma última coisa, se você quiser fazer algo com esse script, o handle.exe é um programa de linha de comando para monitorar handles. Você poderia analisar sua saída. Todos esses utilitários da Sysinternals estão no compartilhamento WebDAV \ live.sysinternals.com \ Tools \