现在,一种方法是让旧版本的服务旋转一个辅助程序,该程序随新版本一起提供,但是…如果它的行为以破坏方式改变怎么办?我觉得不要混淆版本更安全,即使有些东西通常保持不变 – 有助于降低设计复杂性.
现在,似乎有一种.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:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe MyService4.exe
Microsoft (R) .NET Framework
Installation utility Version
2.0.50727.4927 Copyright (c) Microsoft Corporation. All rights reserved.Exception occurred while initializing
the installation:
System.BadImageFormatException: Could
not load file or assembly
‘file:///[path]\MyService4.exe’ or one
of its dependencies. This assembly is
built by a runtime newer than the
currently loaded runtime and cannot be
loaded..
解决方法
你会想做一些事情
OpenSCManager OpenService (or CreateService) ChangeServiceConfig CloseServiceHandle