【发布时间】:2014-05-29 15:03:21
【问题描述】:
场景:服务器上安装了较旧的 2.0 Windows 服务,但如果我尝试使用较新的 4.5 InstallUtil 卸载,则会收到错误消息。
我们使用一个使用 InstallUtil 服务的应用程序来卸载/安装 Windows 服务。有什么方法可以检查使用哪个框架版本的 InstallUtil 来安装服务?因此,根据使用的版本,我可以将正确的 InstallUtil 路径传递给方法
【问题讨论】:
场景:服务器上安装了较旧的 2.0 Windows 服务,但如果我尝试使用较新的 4.5 InstallUtil 卸载,则会收到错误消息。
我们使用一个使用 InstallUtil 服务的应用程序来卸载/安装 Windows 服务。有什么方法可以检查使用哪个框架版本的 InstallUtil 来安装服务?因此,根据使用的版本,我可以将正确的 InstallUtil 路径传递给方法
【问题讨论】:
尝试使用 Windows 自己的 SC.EXE 代替 InstallUtil
例如卸载服务:
NET stop "Your Service Name"
SC delete "Your Service Name"
(第一个命令用于停止服务,如果它仍在运行)
同样您可以使用 SC.EXE 创建和启动服务。这样您就不会依赖 InstallUtil 或其特定版本。
【讨论】:
我可以使用此代码获取我想要的详细信息:
const string dotNetFourPath = "SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application\\" + "servicename "; //servicename here
using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(dotNetFourPath))
{
Console.WriteLine(registryKey.GetValue("EventMessageFile")); //returns EventMessageFile - Value Data
}
【讨论】: