System.ServiceProcess.ServiceController[] services = System.ServiceProcess.ServiceController.GetServices("target-machine-name-or-IP-here");
foreach (System.ServiceProcess.ServiceController service in services)
{
var machine = service.MachineName;
var displayName = service.DisplayName;
var status = service.Status;
}
Obviously the account you run the code under needs the required access rights.