.net – 寻找SC.exe实用程序的API,以及有关自我更新Windows服务
我们构建了一个在客户端计算机上运行的
Windows服务,它偶尔会下载更新版本的自身,然后执行自我更新:安装新服务,启动它,停止旧服务,最后删除它.该服务无法直接停止并执行其他操作,因此它会旋转另一个可执行文件,从而完成一些工作.实现这一点很棘手,当使用较新的.Net Framework构建较新的服务时(例如最近从.Net 2.0切换到.net 4.0),这一点尤其糟糕.问题是.Net 2.0库无法在.Net 4.0服务上运行.
现在,一种方法是让旧版本的服务旋转一个辅助程序,该程序随新版本一起提供,但是…如果它的行为以破坏方式改变怎么办?我觉得不要混淆版本更安全,即使有些东西通常保持不变 – 有助于降低设计复杂性. 现在,似乎有一种.Net版本中立的Windows服务操作方式:sc.exe工具:http://support.microsoft.com/kb/251192 我想知道这是不是我正在寻找的银弹.现在,因为我将以编程方式调用此人并检查错误,所以我不妨使用API??.理想情况下,我会有一个本机C项目,它编译为与SC.exe接口的本机exe.这可能吗?如果没有,那么我该如何在不同的计算机上找到sc.exe呢?它们可以是32位或64位,并运行从Win XP SP2 / 3开始的任何版本的Windows. 如果您对我的问题或一些巧妙的想法有疑问,或者对我在这里提出的确切问题的答案,请告诉我. 编辑:如果我尝试使用2.0代码安装4.0服务,我会得到与我一样的错误: > C:WindowsMicrosoft.NETFrameworkv2.0.50727InstallUtil.exe MyService4.exe
解决方法
您的本机C应用程序可以调用此处记录的功能:
http://msdn.microsoft.com/en-us/library/ms685942(v=VS.85).aspx(其他人提到的SCM API)
你会想做一些事情 OpenSCManager OpenService (or CreateService) ChangeServiceConfig CloseServiceHandle (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows-server-2008-r2 – Windows Server 2008
- active-directory – 带有O365的AD组和分发组
- Windows 7 – 如何在Windows 7任务调度程序中使用
- Windows – 如何使输出显示在Visual Studio 2005
- .net – 如何安装同一Windows服务的多个实例
- windows-server-2003 – Windows Server 2008 RD
- win-universal-app – 无法访问Windows Universa
- sysprep重置windows,封装系统
- windows – 如何强制Perl脚本使用ActiveState的w
- Windows资源管理器 – 每个文件的自定义图标?