Windows服务安装后设置自动启动与允许服务与桌面交互的方法
2009-12-09 08:27
831 查看
1、自动启动的方法设置:
请先设置以下两个控件:
设置serviceProcessInstaller1控件的Account属性为“LocalSystem”.
设置serviceInstaller1控件的StartType属性为"Automatic".
服务上添加安装程序后,通过编码实现自动启动,方法如下:
给serviceProcessInstaller1添加AfterInstall事件,然后添加如下代码:
2、设置允许服务与桌面交互方法:
参考:
/article/5820214.html
/article/5853914.html
3、方法3:在ProjectInstaller的视图设计器中添加控件ServiceController,即serviceController1,添加serviceInstaller1的AfterInstall事件:
请先设置以下两个控件:
设置serviceProcessInstaller1控件的Account属性为“LocalSystem”.
设置serviceInstaller1控件的StartType属性为"Automatic".
服务上添加安装程序后,通过编码实现自动启动,方法如下:
给serviceProcessInstaller1添加AfterInstall事件,然后添加如下代码:
private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e) { #region Windows服务安装后自动启动 Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); string Cmdstring = "sc start MonitoringService"; //CMD命令,MonitoringService为服务名称,即控件serviceInstaller1的ServiceName属性。 p.StandardInput.WriteLine(Cmdstring); p.StandardInput.WriteLine("exit"); #endregion }
2、设置允许服务与桌面交互方法:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using Microsoft.Win32; using System.Diagnostics; namespace Systam { [RunInstaller(true)] public partial class ProjectInstaller : Installer { public ProjectInstaller() { InitializeComponent(); } /// <summary> /// 设置允许服务与桌面交互 ,修改了注册表,要重启系统才能生效 /// </summary> /// <param name="ServiceName">服务程序名称</param> private void SetServiceTable(string ServiceName) { RegistryKey rk = Registry.LocalMachine; string key = @"SYSTEM/CurrentControlSet/Services/" + ServiceName; RegistryKey sub = rk.OpenSubKey(key, true); int value = (int)sub.GetValue("Type"); sub.SetValue("Type", value | 256); } private void serviceProcessInstaller1_AfterInstall(object sender, InstallEventArgs e) { #region 设置允许服务与桌面交互 SetServiceTable("MonitoringService"); #endregion #region Windows服务安装后自动启动 Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); string Cmdstring = "sc start MonitoringService"; //CMD命令 p.StandardInput.WriteLine(Cmdstring); p.StandardInput.WriteLine("exit"); #endregion } } }
参考:
/article/5820214.html
/article/5853914.html
3、方法3:在ProjectInstaller的视图设计器中添加控件ServiceController,即serviceController1,添加serviceInstaller1的AfterInstall事件:
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e) { ConnectionOptions coOptions = new ConnectionOptions(); coOptions.Impersonation = ImpersonationLevel.Impersonate; ManagementScope mgmtScope = new System.Management.ManagementScope(@"root/CIMV2", coOptions); mgmtScope.Connect(); ManagementObject wmiService; wmiService = new ManagementObject("Win32_Service.Name='" + serviceController1.ServiceName + "'"); ManagementBaseObject InParam = wmiService.GetMethodParameters("Change"); InParam["DesktopInteract"] = true; ManagementBaseObject OutParam = wmiService.InvokeMethod("Change", InParam, null); serviceController1.Start(); }
相关文章推荐
- Windows服务安装后设置自动启动与允许服务与桌面交互的方法
- 设置c#windows服务描述及允许服务与桌面交互的几种方法(作者博客还有一大堆C#创建服务的文章)
- 设置c#windows服务描述及允许服务与桌面交互的几种方法(转)
- 用VS2003部署,让服务程序安装完后立即启动服务并且选中“允许服务与桌面交互”及添加服务描述的方法
- 设置c#windows服务描述及允许服务与桌面交互的几种方法
- 设置c#windows服务描述及允许服务与桌面交互的几种方法
- 设置c#windows服务描述及允许服务与桌面交互的几种方法
- windows中允许服务与桌面交互的更改方法示例
- C#设置服务允许与桌面交互,并且启动服务
- 设置c#windows服务描述及允许服务与桌面交互
- 设置Windows服务允许进行桌面交互,实现屏幕监控
- windows中允许服务与桌面交互的更改方法示例
- C# 编写Windows服务并设置为“允许服务与桌面交互”
- 设置c#windows服务描述及允许服务与桌面交互
- centos7中关于mysql安装自动备份及tomcat服务自动启动的设置方法
- .Net实现Windows服务安装完成后自动启动的两种方法
- C#设置服务允许与桌面交互,并且启动服务
- CentOS下设置服务自动启动的方法
- 在 Windows 下将免安装版的 Apache HTTP 或 Apahce Tomcat 作为服务 开机并在后台自动启动
- c# 通过程序来设置允许服务与桌面交互