Службы Windows не могут иметь GUI, поэтому вам нужно будет либо избавиться от GUI, либо разделить ваше приложение на две части - службу без UI и приложение-контроллер. Если у вас есть исходный код, преобразование кода, не относящегося к графическому интерфейсу, в службу очень просто - Visual Studio имеет тип проекта «Служба Windows», который заботится о переносе, и есть простое пошаговое руководство, показывающее, как создать проект развертывания, который позаботится об установке.
Если вы выберете второй маршрут и вам необходимо поместить в контроллер некоторый исходный код GUI, контроллер и служба могут обмениваться данными через WCF, .NET Remoting или обычные сокетные соединения с протоколом, который вы определяете сами. Если вы используете удаленное взаимодействие, обязательно используйте «коренастый» интерфейс, который передает данные с как можно меньшим числом вызовов методов - каждый вызов имеет значительную долю накладных расходов.
Если пользовательский интерфейс довольно прост, вам, возможно, удастся использовать файлы конфигурации для входных и файлов журналов или журнал событий Windows для вывода.