gpt4 book ai didi

c# - 从 Windows 窗体应用程序安装服务

转载 作者:行者123 更新时间:2023-11-30 23:18:48 26 4
gpt4 key购买 nike

我有一个按钮,允许用户浏览文件,然后将路径 + 文件名存储在变量中:

openFileDialog1.ShowDialog();
string filePath = openFileDialog1.FileName;

浏览 .exe 后,我想安装该服务。

目前我们使用 installutil 以管理员身份运行 bat。也可以在管理员命令提示符下使用 sc create 来完成。

从 Windows 窗体安装服务的最简单方法是什么?

我可以创建一个字符串吗:

sc create "servicename" binpath="filepath"

然后从程序中运行它?

我考虑的另一个选择是让程序创建一个 bat 并以管理员身份运行它?

最佳答案

您可以使用以下代码安装服务:

注意:您需要添加对 System.ServiceProcess 的引用

public static void InstallService(string serviceName, Assembly assembly)
{
if (IsServiceInstalled(serviceName))
{
return;
}

using (AssemblyInstaller installer = GetInstaller(assembly))
{
IDictionary state = new Hashtable();
try
{
installer.Install(state);
installer.Commit(state);
}
catch
{
try
{
installer.Rollback(state);
}
catch { }
throw;
}
}
}

public static bool IsServiceInstalled(string serviceName)
{
using (ServiceController controller = new ServiceController(serviceName))
{
try
{
ServiceControllerStatus status = controller.Status;
}
catch
{
return false;
}

return true;
}
}

private static AssemblyInstaller GetInstaller(Assembly assembly)
{
AssemblyInstaller installer = new AssemblyInstaller(assembly, null);
installer.UseNewContext = true;

return installer;
}

你只需要这样调用它:

Assembly assembly = Assembly.LoadFrom(filePath);
InstallService("name", assembly);

关于c# - 从 Windows 窗体应用程序安装服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com