标签: servicecontroller

从C++发送命令到服务

如何从C++向Windows服务发送命令?等效的.NET代码是:

ServiceController sc = new ServiceController("MyService");
sc.ExecuteCommand(255);
Run Code Online (Sandbox Code Playgroud)

c++ windows-services servicecontroller

5
推荐指数
1
解决办法
6357
查看次数

远程计算机上的C#服务状态

我是一名专家程序员,因此,我不知道我在做什么:)

严肃地说; 不,我不是专家.我确实有问题,不知道如何解决它.好消息是,我(我想)知道问题是什么,我希望有人可以提供帮助.

这是问题的概要.我在C#中创建一个表单,它将为我做一些服务器和数据库管理任务.我有一个按钮,当点击时应该在"y"服务器上返回"x"服务的服务状态.状态将在屏幕上打印到文本框.

这是我的代码:

     private void button2_Click(object sender, EventArgs e)
    {
        string fs = "Service X Status = ";
        string mr = "Service A Status = ";
        string qp = "Service B Status = ";
        string sp = "Spooler Service Status = ";
        ServiceController fssc = new ServiceController("xService", "yServer");
        ServiceController mrsc = new ServiceController("aService", "yServer");
        ServiceController qpsc = new ServiceController("bService", "yServer");
        ServiceController spsc = new ServiceController("Spooler", "yServer");

        try
        {
            txtGtwySts.AppendText(sp + spsc.Status.ToString());
            txtGtwySts.AppendText(Environment.NewLine);
            txtGtwySts.AppendText(fs + fssc.Status.ToString());
            txtGtwySts.AppendText(Environment.NewLine);
            txtGtwySts.AppendText(mr + …
Run Code Online (Sandbox Code Playgroud)

c# servicecontroller

5
推荐指数
1
解决办法
1万
查看次数

从services.msc c#获取服务路径

我正在尝试从services.msc获取服务可执行文件路径

我写了下一个代码:

  var service = ServiceController.GetServices().Where(p => p.ServiceName.Equals("Service name", StringComparison.InvariantCultureIgnoreCase));
if (service.Any())
//get service data
Run Code Online (Sandbox Code Playgroud)

我找不到服务可执行路径所在的位置(如果有的话)?

在services.msc中,我可以看到路径,所以我假设它也可以通过代码获取它. services.msc中的服务信息示例(请参阅那里存在可执行路径)

有任何想法吗?

c# service servicecontroller

3
推荐指数
1
解决办法
2614
查看次数

无法使用ServiceController启动和停止服务

我有以下方法来启动和停止服务.我从另一个Console应用程序调用此方法进行调试,因为我已经使用了类库(DLL)中的方法.

该应用程序以管理权限启动.

public void ServiceStart()
{
    ServiceController service = new ServiceController();
    service.ServiceName = "ASP.NET State Service";
    service.Start();
}

public void ServiceStop()
{
    ServiceController service = new ServiceController();
    service.ServiceName = "ASP.NET State Service";
    service.Stop();
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用Start()Stop()抛出以下消息的异常时:

无法在计算机上打开ASP.NET State Service服务'.'

有人可以帮我吗?

c# service class-library servicecontroller

3
推荐指数
1
解决办法
5685
查看次数

ServiceController.WaitForStatus 是设置状态还是只是等待?

ServiceController.WaitForStatus第一次使用它来限制尝试启动无法启动的服务所浪费的时间。我的假设是像这样使用它:

var sc = new ServiceController(_monitoredService);
var seconds = _startWaitTimeout / 1000;
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 0, seconds));
if (sc.Status != ServiceControllerStatus.Running)
{
    _logger.Warn($"'{_monitoredService}' did not start within {seconds} seconds.");
}
Run Code Online (Sandbox Code Playgroud)

然后我肩膀上的一个小恶魔建议WaitForStatus在等待之前可能会尝试设置状态。可以?

.net c# windows-services servicecontroller .net-4.6

3
推荐指数
1
解决办法
4458
查看次数

如何调试Windows服务

我使用Code Project Article 创建了一个Windows服务.我可以使用-i和-d开关安装服务并删除服务.

我能够在services.msc中看到该服务,但是当我启动该服务时它什么也没做.我将提供服务主代码:

void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
{
  DWORD status;
  DWORD specificError;
  m_ServiceStatus.dwServiceType = SERVICE_WIN32;
  m_ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
  m_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
  m_ServiceStatus.dwWin32ExitCode = 0;
  m_ServiceStatus.dwServiceSpecificExitCode = 0;
  m_ServiceStatus.dwCheckPoint = 0;
  m_ServiceStatus.dwWaitHint = 0;

  m_ServiceStatusHandle = RegisterServiceCtrlHandler("Service1", 
                                            ServiceCtrlHandler); 
  if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)
  {
    return;
  }
  m_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
  m_ServiceStatus.dwCheckPoint = 0;
  m_ServiceStatus.dwWaitHint = 0;
  if (!SetServiceStatus (m_ServiceStatusHandle, &m_ServiceStatus))
  {
  }

  bRunning=true;
  while(bRunning)
  {

    Sleep(150000);
    ShellExecute(NULL, "open", "C:\\", NULL, NULL, SW_SHOWNORMAL);

  }
  return;
}
Run Code Online (Sandbox Code Playgroud)

但是当我启动服务时,它既不会睡觉也不会启动资源管理器.我错过了什么吗?

c++ windows windows-services window servicecontroller

2
推荐指数
2
解决办法
7410
查看次数

远程安装Windows服务

如何使用C#远程安装Windows服务?(我不想调用sc.exe/psexec/powershell远程处理).

谢谢!尤瓦

c# windows-services servicecontroller

2
推荐指数
1
解决办法
1604
查看次数

使用ServiceController类与Windows服务进行通信

我有一个Windows服务项目,包括两个服务,service1和service2.我们如何在两种服务之间进行通信?例如,如何通过service1启动service2?我可以使用ServiceController类来执行此操作吗?你有什么建议这样做的?

.net c# windows windows-services servicecontroller

2
推荐指数
2
解决办法
2448
查看次数

无法在.NET 3.5中使用ServiceController停止服务

我在.NET 3.5中工作,我遇到了使用ServiceController停止某些服务的问题.我搜索整个互联网,我发现我的问题无法解决;)

我是这样做的:

using (ServiceController service = new ServiceController("Service"))
{
    try
    {
        TimeSpan timeout = TimeSpan.FromSeconds(timeoutSeconds);

        service.Stop();
        service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

我等到我的服务停止了.然后我想替换它的库(更新它).抛出异常:

UnauthorizedAccessException异常详细信息:System.UnauthorizedAccessException:拒绝访问路径'blablabla'.

我确信我可以访问此路径,因为我以管理员身份运行我的应用程序.

当这段代码执行时,有趣的是,此服务从当前服务列表中消失(在任务管理器中).所以它实际上阻止了它,但是一些线程仍然必须使用它,所以我无法移动任何Service的文件.即使我尝试自己移动文件(我转到Service目录并尝试使用鼠标移动文件)我也做不到.但是当我手动停止服务(任务管理器和'结束任务')时,我可以用它的文件做任何我想做的事情.那么从C#代码(使用ServiceController)停止它并使用任务管理器停止它之间的区别是什么?

我不知道它是否重要,但我在Virtual Box的Windows Server 2008上运行此应用程序(和此服务).(我需要在其他机器上运行它然后我的电脑).

任何想法如何解决这个问题?;)

谢谢你的帮助.

祝福,皮特.

.net c# service windows-services servicecontroller

2
推荐指数
1
解决办法
5141
查看次数

sc.exe安装exe作为服务?

我已经花了很多时间阅读有关SC.EXE运行可执行作为Windows服务,它似乎应该是我有相当简单明了BU一些问题得到它没有这个错误的工作:错误1053服务没有及时回应或控制要求.

我得到了要安装的服务,它在服务列表中,但它不允许我启动它.这就是我使用的基本尝试:

>sc create TestService binPath= "C:\Program Files (x86)\[path.exe]" DisplayName= "TestingServices" start= auto
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试作为服务运行的exe必须设置为正确运行作为服务吗?我不认为是这种情况,因为有些程序可以运行任何exe作为服务.我正在尝试这样做,我该怎么做?

.net c# windows windows-services servicecontroller

2
推荐指数
1
解决办法
1万
查看次数