public static void InstallAndStart(string ServiceName, string DisplayName, string FileName) { IntPtr intPtr = ServiceInstaller.OpenSCManager(ServiceManagerRights.Connect | ServiceManagerRights.CreateService); try { IntPtr intPtr1 = ServiceInstaller.OpenService(intPtr, ServiceName, ServiceRights.QueryStatus | ServiceRights.Start); if (intPtr1 == IntPtr.Zero) { intPtr1 = ServiceInstaller.CreateService(intPtr, ServiceName, DisplayName, ServiceRights.QueryStatus | ServiceRights.Start, 16, ServiceBootFlag.AutoStart, ServiceError.Normal, FileName, null, IntPtr.Zero, null, null, null); } if (intPtr1 == IntPtr.Zero) { throw new ApplicationException("Failed to install service."); } try { ServiceInstaller.StartService(intPtr1); } finally { ServiceInstaller.CloseServiceHandle(intPtr1); } } finally { ServiceInstaller.CloseServiceHandle(intPtr); } }