最近写了个Windows服务(Windows Services),安装了以后,觉得和已有的Windows服务不一样。为什么?我的缺少描述,中间一栏是空的。
再看.NET的ServiceBase类没有添加描述的属性。
public class ProjectInstaller : System.Configuration.Install.Installer中也没有什么属性来添加。从网搜了后才知道要重载ProjectInstaller 的Install和UnInstall虚方法。其实重写这些虚方法就是为了在注册表相应服务中加一个鍵值"Description",其值填为相应的描述就可以了。
public override void Install(IDictionary stateServer)
{
Microsoft.Win32.RegistryKey system,
service,
config;
try
{
//Let the project installer do its job
base.Install(stateServer);
system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System").OpenSubKey("CurrentControlSet").OpenSubKey("Services");
service = system.OpenSubKey(this.serviceInstaller1.ServiceName, true);
service.SetValue("Description", "服务描述");
//添加额外的鍵
config = service.CreateSubKey("AdditionalInformation");
}
catch(Exception e)
{
}
}
public override void Uninstall(IDictionary stateServer)
{
Microsoft.Win32.RegistryKey system,
currentControlSet,
services,
service;
try
{
system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System");
currentControlSet = system.OpenSubKey("CurrentControlSet");
services = currentControlSet.OpenSubKey("Services");
service = services.OpenSubKey(this.serviceInstaller1.ServiceName, true);
//删除额外的鍵
service.DeleteSubKeyTree("AdditionalInformation");
//...
}
catch(Exception e)
{
}
finally
{
base.Uninstall(stateServer);
}
}
注意这些代码是在ProjectInstaller 文件中的。
也许有更好的办法,望大家指教。