您的位置:首页 > 编程语言 > C#

安装 启动 停止 卸载 Windows服务 c#

2012-04-02 21:33 761 查看
问题:windows服务安装时,出错:System.ComponentModel.Win32Exception: 帐户名无效或不存在,

解决:将serviceProcessInstaller1->Accout属性,设为:LocalSystem(默认是User)。

运行: Installuitl 程序名.exe ,安装成功。

卸载是 Installuitl /u 程序名.exe

问题:如何不使用InstallUtil 安装 启动 停止 卸载 Windows服务?

解决:用System.Configuration.Install.AssemblyInstaller类加载一个程序集,并运行其中的安装程序。
[C#]
//安装服务
public static void InstallService(string filepath, string serviceName, string[] options)
{
try
{
if (!IsServiceExisted(serviceName))
{
IDictionary mySavedState = new Hashtable();
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = filepath;
myAssemblyInstaller.CommandLine = options;
myAssemblyInstaller.Install(mySavedState);
myAssemblyInstaller.Commit(mySavedState);
myAssemblyInstaller.Dispose();
}
}
catch (Exception ex)
{
throw new Exception("Install Service Error\n" + ex.Message);
}
}
//卸载服务
public static void UnInstallService(string filepath, string serviceName, string[] options)
{
try
{
if (IsServiceExisted(serviceName))
{
AssemblyInstaller myAssemblyInstaller = new AssemblyInstaller();
myAssemblyInstaller.UseNewContext = true;
myAssemblyInstaller.Path = filepath;
myAssemblyInstaller.CommandLine = options;
myAssemblyInstaller.Uninstall(null);
myAssemblyInstaller.Dispose();
}
}
catch (Exception ex)
{
throw new Exception("UnInstall Service Error\n" + ex.Message);
}
}
//判断服务是否存在
public static bool IsServiceExisted(string serviceName)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController s in services)
{
if (s.ServiceName == serviceName)
{
return true;
}
}
return false;
}
//启动服务
public static void StartService(string serviceName)
{
if (IsServiceExisted(serviceName))
{
System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
if (service.Status != System.ServiceProcess.ServiceControllerStatus.Running &&
service.Status != System.ServiceProcess.ServiceControllerStatus.StartPending)
{
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, TimeSpan.FromSeconds(60));
}
}
}
//停止服务
public static void StopService(string serviceName)
{
if (IsServiceExisted(serviceName))
{
System.ServiceProcess.ServiceController service = new System.ServiceProcess.ServiceController(serviceName);
if (service.Status == System.ServiceProcess.ServiceControllerStatus.Running)
{
service.Stop();
service.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(60));
}
}
}

if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = false;
var cb_blogId = 75572;
var cb_entryId = 2265025;
var cb_blogApp = "yanghongjie";
var cb_blogUserGuid = "e47ff116-48ba-df11-ac81-842b2b196315";
var cb_entryCreatedDate = '2011/11/27 14:44:00';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐