.net中如何启动windows服务?

yumanqing 2008-08-18 05:19:53
一个winform程序,有个窗体需要系统启动Print Spooler 服务(RPC),由于有些用户的这个服务没有自动启动,所以在窗体加载的时候先判断是否启动,如果没有,则先启动,代码如下:
//  Print Spooler
ServiceController controller = new ServiceController("Spooler");
if (controller.Status == ServiceControllerStatus.Stopped)
{
controller.Start();
controller.Refresh();
}

可现在如果此服务的启动类型是手动或者自动的话,可以正常启动,如果这个服务的启动类型是禁用的话,上面的代码就会出错,我尝试过修改启动类型,可总是不成功,请教.....
...全文
2218 38 打赏 收藏 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
s000rd 2009-07-13
  • 打赏
  • 举报
回复
学习了
l1314j 2009-04-11
  • 打赏
  • 举报
回复
听说回帖可以拿分呢



顺便报个道。学习一下
marvelstack 2008-09-08
  • 打赏
  • 举报
回复
常见的有两种方式实现,可以参考我这里的代码和文章,
使用C#控制远程计算机的服务
http://blog.csdn.net/zhzuo/archive/2004/03/29/22025.aspx
llxzj60 2008-09-05
  • 打赏
  • 举报
回复
一下代码供参考

System.ServiceProcess.ServiceController winService = null;
System.TimeSpan timeOut = new TimeSpan(0,1,0);//Set timeout
private void btnReStart_Click(object sender, System.EventArgs e)
{
try
{
InitilizeServiceController();
if (winService.Status == System.ServiceProcess.ServiceControllerStatus.Running)
{
winService.Stop();
winService.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped,timeOut);//wait service change to stopped status
this.label1.Text = "service status now is :"+winService.Status;
this.label1.Update();
System.Threading.Thread.Sleep(15000);
winService.Start();
winService.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.StartPending,timeOut);//wait service change to start pending status
this.label1.Text = "service status now is :"+winService.Status;
this.label1.Update();
winService.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running,timeOut);//wait service change to running status
this.label1.Text = "service status now is :"+winService.Status;
this.label1.Update();
}
else if (winService.Status == System.ServiceProcess.ServiceControllerStatus.Stopped)
{
this.label1.Text = "service status now is :"+winService.Status+",please click start button";
this.label1.Update();
}
else
{
this.label1.Text = "service status now is :"+winService.Status;
this.label1.Update();
}

}
catch(Exception ex)
{
this.label1.Text = ex.Message;
this.label1.Update();
}
}

/// <summary>
/// Initilize Service Controller
/// </summary>
private void InitilizeServiceController()
{
if (this.txtServiceName.Text.Trim().Length == 0)
{
throw new Exception("please enter service name");
}
string serviceName = this.txtServiceName.Text;
winService = new System.ServiceProcess.ServiceController(serviceName);//Get service by name
}
lfzwenzhu 2008-09-05
  • 打赏
  • 举报
回复
mark
homejiji 2008-09-05
  • 打赏
  • 举报
回复
学习了。。。
:)..
palmax 2008-09-05
  • 打赏
  • 举报
回复
调用Kernel32的ChangeServiceConfig,第一个参数正好用 ServiceController.ServiceHandle
Red_angelX 2008-08-28
  • 打赏
  • 举报
回复
OpenSCManager
StartService
yhy0611 2008-08-28
  • 打赏
  • 举报
回复
MARK
亮声lz 2008-08-27
  • 打赏
  • 举报
回复
mark一下
marvelstack 2008-08-27
  • 打赏
  • 举报
回复
建议使用WMI来做,参考,
使用C#控制远程计算机的服务
http://blog.csdn.net/zhzuo/archive/2004/03/29/22025.aspx
gaocumt 2008-08-26
  • 打赏
  • 举报
回复
学习..
GhostAdai 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 yumanqing 的回复:]
试了一下,gomoku的方法可以解决,至于批处理文件启动服务及改注册表的方法,也试过可以实现,不过感觉是临时解决方法,谢谢大家了!
[/Quote]

能解决就是好方法,管它临时不临时呢,在没有更好的解决方法之前,那就叫最佳方案。
shuiguozheng 2008-08-26
  • 打赏
  • 举报
回复
我也来学!
AutoruN123 2008-08-24
  • 打赏
  • 举报
回复
学习了
marchonchina 2008-08-24
  • 打赏
  • 举报
回复
学习了!
kogo2005 2008-08-23
  • 打赏
  • 举报
回复
推荐一个计算机电子书下载站
顺风电子书 - 国内最专业的计算机电子书下载站
http://www.1kip.cn
zx2356 2008-08-23
  • 打赏
  • 举报
回复
Mark
yumanqing 2008-08-21
  • 打赏
  • 举报
回复
试了一下,gomoku的方法可以解决,至于批处理文件启动服务及改注册表的方法,也试过可以实现,不过感觉是临时解决方法,谢谢大家了!
leer168 2008-08-21
  • 打赏
  • 举报
回复
Mark
加载更多回复(17)
内容概要:本文围绕基于电感电容电流环PI与前馈补偿矩阵构造的跟网型储能变流器,开展dq坐标系下的阻抗理论建模与Simulink仿真对比研究。通过建立储能变流器在dq域的数学模型,设计包含电感电流内环、电容电流中间环和电压外环的多环控制结构,并引入前馈补偿矩阵以提升系统的动态响应能力和稳定性。在此基础上,采用小信号分析法推导系统的输出阻抗模型,构建完整的dq域阻抗理论框架,并利用Simulink平台搭建高保真仿真模型进行频域扫频验证,实现理论建模与仿真结果的精确对比,深入分析控制参数对系统阻抗特性的影响规律,揭示其在抑制并网系统振荡、提升稳定性方面的关键作用,为新能源并网系统的稳定性分析与优化设计提供坚实的理论支撑和技术路径。; 适合人群:具备电力电子、自动控制理论基础,从事新能源发电、储能系统、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握跟网型储能变流器在dq域的阻抗建模方法;②理解多环控制与前馈补偿对系统阻抗特性的影响机制;③实现理论阻抗模型与Simulink仿真扫频结果的对比验证,支撑并网稳定性分析。; 阅读建议:学习者应结合控制理论与电力电子变换器知识,重点关注数学推导与仿真建模的一致性,建议动手复现Simulink仿真模型并进行参数敏感性分析,以深化对阻抗重塑机理的理解。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧