using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.Linq; namespace LYFZ.WcfSystemService { [RunInstaller(true)] public partial class ProjectInstaller : System.Configuration.Install.Installer { public ProjectInstaller() { InitializeComponent(); } private void ErpServiceInstaller_AfterInstall(object sender, InstallEventArgs e) { System.ServiceProcess.ServiceController s = new System.ServiceProcess.ServiceController( LYFZ.WindowsServiceHandling.ServiceManagement.GetServiceName(LYFZ.WindowsServiceHandling.ServiceType.LYFZ_WcfSystmeService)); SetServiceDesktopInsteract(s.ServiceName); if(s.Status==System.ServiceProcess.ServiceControllerStatus.Stopped){ s.Start();//设置服务安装后立即启动 } } #region 设置服务与桌面交互 /// <summary> /// 让服务启动某个应用程序,就要修改服务的属性,勾选允许服务与桌面交互, /// 设置服务与桌面交互,在ErpServiceInstaller的AfterInstall事件中使用 /// </summary> /// <param name="serviceName">服务名称</param> private void SetServiceDesktopInsteract(string serviceName) { System.Management.ManagementObject wmiService = new System.Management.ManagementObject(string.Format("Win32_Service.Name='{0}'", serviceName)); System.Management.ManagementBaseObject changeMethod = wmiService.GetMethodParameters("Change"); changeMethod["DesktopInteract"] = true; System.Management.ManagementBaseObject utParam = wmiService.InvokeMethod("Change", changeMethod,null); } #endregion } }