我想在app.config中指定我的服务名称,而无需重复和重复安装/卸载我的服务。 但只是从app.config中检索服务名称,该服务似乎忽略了它。有什么特别的技巧如何获得这个? 提前谢谢。
我指的是经典的Windows服务。我认为这里不需要任何代码。我只想动态地从app.config中检索服务名称。
答案 0 :(得分:4)
在互联网上搜索并阅读文章后,我更清楚的是,无法以动态的方式在app.config中指定服务名称,而是可以使用sc命令执行类似的解决方案。您可以在app.config中指定其他配置变量,并使用sc重命名
sc.exe创建“servicename”binPath =“myservicepath.exe”
答案 1 :(得分:3)
答案 2 :(得分:3)
http://www.codeproject.com/Articles/21320/Multiple-Instance-NET-Windows-Service
<add key="ServiceName" value="I"/>
[RunInstaller(true)]
public class ServiceInstaller1 : Installer
{
internal static string ServiceNameDefault = "My Service";
internal static string ServiceName = GetConfigurationValue("ServiceName");
/// <summary>
/// Public Constructor for WindowsServiceInstaller.
/// - Put all of your Initialization code here.
/// </summary>
public ServiceInstaller1()
{
var serviceProcessInstaller = new ServiceProcessInstaller();
var serviceInstaller = new ServiceInstaller();
//# Service Account Information
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
//serviceProcessInstaller.Username = null;
//serviceProcessInstaller.Password = null;
//# Service Information
serviceInstaller.DisplayName = ServiceName;
serviceInstaller.StartType = ServiceStartMode.Manual;
//# This must be identical to the WindowsService.ServiceBase name
//# set in the constructor of WindowsService.cs
serviceInstaller.ServiceName = ServiceName;
Installers.Add(serviceProcessInstaller);
Installers.Add(serviceInstaller);
}
private static string GetConfigurationValue(string key)
{
Assembly service = Assembly.GetAssembly(typeof(Service));
Configuration config = ConfigurationManager.OpenExeConfiguration(service.Location);
if (config.AppSettings.Settings[key] != null)
return ServiceNameDefault + " " + config.AppSettings.Settings[key].Value;
else
return ServiceNameDefault;
}
}
答案 3 :(得分:2)
假设您的意思是Windows服务,答案是否定的。该服务必须安装在注册表中,名称是注册表项之一。
答案 4 :(得分:2)