问题标签 [servicecontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
8238 浏览

c# - 使用正确的权限在 ASP.NET/C# 中启动服务

在我的网站上(用 ASP.NET/C# 编写)我希望版主能够启动某个服务。我为此提供的代码是:

现在,当我运行它时,我收到错误“无法在计算机上打开 InvidualFileConversion 服务”,以及附加消息:“访问被拒绝”。

我知道这是权限问题,但是如何给自己适当的权限? 不要在我应该写的地方给出答案:,因为我已经尝试过了,但它没有用。此外,当我只需要这几行代码时,我认为这并不是为整个网站设置它的最佳方式。

编辑:我已经在我的代码中添加了它,但它仍然不起作用,我在同一个地方得到了同样的异常。现在看起来像这样:

我有一个看起来像这样的模拟类:

所以验证工作有效但不能解决我的问题..我想权限仍然存在问题..我该怎么做才能改变这个?

编辑 2:我采取的下一步涉及这个:

  1. 创建一个应用程序池,其中将身份设置为用户(它是管理员组的成员)。
  2. 将服务“登录”设置为同一用户。
  3. 再次运行网络应用程序后,它仍然失败..

但是,如果我在代码中输入管理员帐户作为凭据,它就可以工作..(即使我没有在应用程序池和服务中使用管理员...)

换句话说,我可以使用管理员帐户获得我想要的东西,但不能使用我自己创建并拥有管理员权限的帐户。我仍然想与我自己创建的用户一起完成这项工作,因为我认为将您的管理员凭据可用并不那么安全。

在旁注中,在我工作的服务器上,我有一个具有管理员权限但不是“管理员”帐户的帐户。

编辑3:这越来越奇怪了。我现在似乎可以工作但是: - 没有模拟方法(它不起作用)。- 我只是照罗布说的做了。我有自己的应用程序池和我定义的用户。Windows 服务也指定了该用户。(用户获得了作为服务登录的权利) - 有了这个,它似乎工作了。- 但是如果通过我的网站进行调试,我仍然会被拒绝访问。但是,如果只是通过浏览器及其 ip 访问我的网站,我可以启动该服务。

总结一下: - 模拟方法不起作用。- 如果服务还指定了用户,则只需使用与当前用户一起创建的应用程序池即可。但它在调试模式下不起作用(那里仍然拒绝访问)。

这篇文章越来越大了,我想知道是否还有人真正读过它。但也许仍然有人可以向我提供任何细节?我担心它会在未来的某个地方再次失败..

任何评论将不胜感激!弗洛里斯

0 投票
9 回答
91034 浏览

windows-services - ServiceController 似乎无法停止服务

我正在尝试Topshelf.Host使用以下代码停止本地计算机上的 Windows 服务(如果重要,该服务是 ):

timeout设置为 1 小时,但服务实际上从未停止。奇怪的是,在服务 MMC 管理单元中,我首先看到它处于“停止”状态,但过了一会儿它又恢复为“已启动”。但是,当我尝试手动停止它时,会发生错误:

我在这里错过了什么吗?

0 投票
2 回答
3886 浏览

c# - C# 查询 Windows 服务

我一直在使用一个应用程序来查询远程服务器上运行的 Windows 服务并将机器名称、服务名称和状态写入数据库。

但是,我也想尝试捕获启动类型(自动、手动、禁用)。我使用的是没有任何启动类型选项的服务控制器,所以我开始考虑使用管理类。这个类看起来有我需要的一切,但我不知道如何在我的远程服务器上使用它。对于服务控制器,我这样做:

我为管理类尝试了这个:

但是当然没有用。任何人都知道如何使用管理类从远程机器获取服务?或者有没有其他方法使用服务控制器来获取启动类型?

我还尝试将它们结合起来,并将管理类 foreach 语句放在服务控制器中,但它陷入了无限循环。

0 投票
1 回答
13599 浏览

c# - 远程机器上的 C# 服务状态

我是一名专业程序员,因此,我对我正在做的事情一无所知:)

严肃地说;不,我无论如何都不是专家。不过我确实有问题,不知道如何解决。好消息是,我(想我)知道问题出在哪里,我希望这里有人能提供帮助。

这是问题的概要。我正在用 C# 创建一个表单,它将为我完成一些服务器和数据库管理任务。我有一个按钮,单击该按钮应该返回“y”服务器上“x”服务的服务状态。状态在屏幕上打印到文本框。

这是我的代码:

我得到例外,基本上是说:无法在“服务器”上打开“服务”。由于这是一个远程服务器,我假设这是一个凭证/安全问题。但是,我对 Spooler 服务没有任何问题。

我的问题是...如何将用户 ID 和密码传递给该服务器,以便它进行身份验证或运行,以便我可以检查这些服务的状态,这就是问题所在。如果有人不认为这是问题所在,请告诉我哪里出错了:)

0 投票
1 回答
160 浏览

service - 无法从远程机器启动和停止服务

我们在远程机器上有一些窗口服务。我无法使用机器上的服务控制器启动和停止该服务。

0 投票
1 回答
698 浏览

service - 在 Windows MSI 安装程序中修改服务控制权限

所以现在我正在尝试使用以下命令更改 Windows 服务的权限:sc sdset SERVICENAME PERMISSIONS

我已将此作为一项操作放在 MSI 安装程序中,它似乎执行得很好。但是,sc 需要管理员权限来设置权限,我似乎无法在 MSI 安装程序中找到这样做的方法。我尝试使用命令 runas /user:administrator 但不幸的是,这在安装程序将要运行的机器上可能会有所不同。

有小费吗?

0 投票
3 回答
1430 浏览

c# - WPF 使 ServiceController[] 可观察

所以我试图制作一个数据网格来显示有关本地窗口服务的一些信息,特别是我的,我想拥有服务的显示名称和状态,然后有一个按钮可以单击以启动或停止。我可以很好地链接按钮方法,但服务状态没有改变,任何建议如何使这个属性可观察到数据网格,也可以根据状态动态更改按钮从开始到停止,其次我如果可能的话,想让停止命令成为按钮命令。

有什么建议么?

0 投票
2 回答
1724 浏览

windows-services - 使用 ServiceController 启动的 Windows 服务在执行 WMI 连接时抛出“RPC 服务器不可用”

我的安装程序正在安装一个 Windows 服务,然后使用ServiceController开始:

该服务似乎可以正常启动,但是当该服务尝试对远程计算机执行 WMI 调用时,它会引发异常;

我已经尝试从运行服务的机器连接到 WBEMTest,连接到服务尝试连接的同一台机器,它工作正常。

此外,如果我从 Services.msc 手动启动服务,它会完美运行。ServiceController 我缺少什么?

0 投票
2 回答
11898 浏览

.net - 使用 ServiceController 和模拟启动远程 Windows 服务

我有一个需要能够打开和关闭远程服务的 .NET MVC3 应用程序。为了做到这一点,我通过 WindowsIdentity.Impersonate() 模拟了一个特定的用户帐户。要测试用户的权限,我可以以用户身份登录并sc.exe \\[server] start [service]从命令提示符处执行。我也知道 impersonate 命令按预期工作,因为应用程序匿名运行,因此无法在.没有模拟的情况下控制本地计算机 ( ) 上的服务,但可以通过模拟控制本地服务。但是,当我将它放在一起并尝试启动远程服务而不是本地服务时,我总是收到错误“无法[service]在计算机上打开服务' [server]'”

有没有人遇到过类似的问题?在我意识到 sc.exe 可以正常工作之前,我一直以为它是服务器配置而不是 .NET 问题。这是我正在使用的类的缩写版本:

另一个注意事项:如果我将应用程序而不是服务器指向域中的另一台 Windows 7 PC 并将模拟凭据更改为该 PC 所有者的凭据,我实际上可以毫无问题地远程控制他们的服务。

根据请求,我在此处添加模拟代码。它有点长,所以请耐心等待:

我在尝试启动或停止服务之前调用此代码:

可能值得注意的是,我可以列出服务并获得单个服务的状态(就像我在这里所做的那样) - 只有当我开始或停止服务时才会遇到麻烦。

0 投票
2 回答
2510 浏览

c# - 使用 ServiceController 类与 Windows 服务通信

我有一个由两个服务 service1 和 service2 组成的 windows 服务项目。我们如何在两个服务之间进行通信?例如,我们如何让 service2 由 service1 启动?我可以使用 ServiceController 类来执行此操作吗?你会建议做什么?