C# 如何从C内置的应用程序中检测安装并自动启动MySQL服务器

C# 如何从C内置的应用程序中检测安装并自动启动MySQL服务器,c#,mysql,process.start,C#,Mysql,Process.start,我正在为使用MySQL服务器的客户端开发一个C桌面应用程序。我的客户机要求的是,数据库服务器应该在应用程序启动时启动,也应该在应用程序退出时停止。我知道如何使用process启动C中的进程。start但我不知道的是如何检测MySQL服务器的安装路径并启动服务器,因为我的客户端的条件是服务器安装路径将来可能会改变。另外,我不知道如何停止C中的进程/服务。请告诉我以下两件事: 检测MySQL的安装路径,通过C启动服务器 通过C在应用程序退出时停止MySQL服务器 我试过了,但是这段代码需要MySql

我正在为使用MySQL服务器的客户端开发一个C桌面应用程序。我的客户机要求的是,数据库服务器应该在应用程序启动时启动,也应该在应用程序退出时停止。我知道如何使用process启动C中的进程。start但我不知道的是如何检测MySQL服务器的安装路径并启动服务器,因为我的客户端的条件是服务器安装路径将来可能会改变。另外,我不知道如何停止C中的进程/服务。请告诉我以下两件事:

检测MySQL的安装路径,通过C启动服务器 通过C在应用程序退出时停止MySQL服务器 我试过了,但是这段代码需要MySql安装的路径。我需要路径自动,我无法预测任何代码

if (Process.GetProcessesByName("mysqld.exe") == null)
{
    Process.Start("C:\Program Files (x86)\MySQL\MySQL Cluster 5.5\bin\mysqld.exe");
}

给出bin文件夹中MySQLInstanceConfig.exe的路径

C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld

浏览以下链接,这可能会对您有所帮助

这个很好用。。。。 只需转到windows服务并确定机器上MySQL实例的服务名称。 我的是‘MySQL57’。超时只是为了确保服务状态在执行其他操作之前返回预期值


你们自己尝试过什么吗?你们是如何在任务管理器中停止进程的?…是的@NaceRedine我编辑了我的问题查看itOLEDB连接在这种情况下是否适合你们或者使用SQL Server 2008 r2…为什么每次都要启动并关闭它???@自由职业者:我不知道他们为什么需要它,我也对他们说,但他们说,出于安全原因,我们必须这样做
    public int RestartMySQL()
    {
        var serviceName = "MySQL57";
        var timeoutMilliseconds = 2000;

        var service = new ServiceController(serviceName, Environment.MachineName);

        try
        {
            TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);

            if (service.Status == ServiceControllerStatus.Running)
            {
                service.Stop();
                service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
            }

            service.Start();
            service.WaitForStatus(ServiceControllerStatus.Running, timeout);

            return 5;
        }
        catch (Exception ex)
        {
            return 0;
        }
    }