- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 .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()); }}
我在等我的服务停止。然后我想替换它的库(更新它)。并抛出异常:
未授权访问异常异常详细信息:System.UnauthorizedAccessException:拒绝访问路径“blablabla”。
我确定我有权访问此路径,因为我以管理员身份运行我的应用程序。
有趣的是当这段代码执行时,这个服务从当前服务列表中消失(在任务管理器中)。所以它实际上停止了它,但一些线程仍然必须使用它,所以我不能移动任何服务的文件。即使我尝试自己移动文件(我转到服务目录并尝试使用鼠标移动它的文件),我也做不到。但是当我手动停止服务时(任务管理器和“结束任务”)我可以用它的文件做任何我想做的事。那么从 C# 代码(使用 ServiceController)停止它和使用任务管理器停止它有什么区别?
我不知道它是否重要,但我在 Virtual Box 中的 Windows Server 2008 上运行此应用程序(和此服务)。 (我需要在其他机器上然后在我的电脑上运行它)。
有什么办法可以解决这个问题吗? ;)
感谢您的帮助。
祝你好运,皮特。
最佳答案
好的,我解决了我的问题。
首先,我使用 Net Stop
的 Administrator Command-Prompt Command
来停止 Service
并且它有效 ,但我开始想知道为什么。答案是花了很多时间!ServiceController
实际上停止了它,但一些进程仍在使用它。
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
也很好,因为它直接改变了服务的状态(这只是 Windows Services
列表中的一个改变),但是礼貌地关闭所有使用特定服务的线程需要一些时间:)
所以您需要做的只是等待,然后再次检查它是否仍在运行。如果是,则使用 Process
类将其终止。
关于c# - 无法在 .NET 3.5 中使用 ServiceController 停止服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783354/
下面的代码抛出异常。我不明白我在代码中犯了什么错误。有人可以帮我弄清楚吗?我认为这是一些担保权问题。如果是这样,我如何向任何用户或应用程序授予以编程方式访问此 Windows 服务的安全权限? Dim
我正在尝试检查 C# 中的服务,我添加了 System.ServiceProcess.dll 虽然我得到了错误: Error 2 The type or namespace name 'Service
我正在使用服务 Controller 的 executecommand 函数,如下所示: ServiceController serviceController = new S
设置: 我们有 2 台服务器。它们在不同的子网上,但仍然可以相互通信。 问题: 服务器 1 曾经成功地通过 ServiceController.Status 调用查询服务器 2 的服务,直到我们的 I
我有以下代码 private DataTable GetServices(string[] serviceNames) { DataTable dt = new Dat
我有以下方法来启动和停止服务。我从另一个控制台应用程序调用此方法进行调试,因为我使用了类库 (DLL) 中的方法。 应用程序以管理权限启动。 public void ServiceStart() {
奇怪的是……这次没有代码,只有 using System.ServiceProcess; import 在导入的 ServiceProcess 部分下面有一条红线。 有人知道为什么吗?是否有此类的替代
ServiceController serviceController = new ServiceController(someService); serviceController.Stop();
我有一个 WinForm 应用程序和一个服务,它在服务器上从该应用程序执行一些工作。我希望用户能够从应用程序控制服务,所以我添加了一个 ServiceController 来完成所有工作(仅开始、停止
所以我试图制作一个数据网格来显示有关本地窗口服务的一些信息,特别是我的,我想要显示服务的名称和状态,然后有一个按钮可以单击以启动或停止.我可以很好地链接按钮方法,但服务状态不会改变,关于如何使数据网格
我正在编写一个应用程序,以使用 ServiceController 以编程方式启动/停止 Windows 服务。我有一个包含一些 UI 功能的 UI 类,以及一个启动和停止服务的 Helper 类。
我正在使用 ServiceController 类从 C# 程序集远程关闭 IIS。我想知道我需要通过网络执行此操作的最低级别的权限是什么,在我当前的测试中我使用的是 Administrator 并且
我有一个 .NET MVC3 应用程序,需要能够打开和关闭远程服务。为了做到这一点,我通过 WindowsIdentity.Impersonate() 模拟特定的用户帐户。为了测试用户的权限,我可以以
我已经编写了一个 Windows 服务,并且我有一个管理面板,我可以从网页上配置该服务。为此,我正在使用数据库。所以基本上我所做的是更改数据库中的值,服务读取它并更改其执行时间......等等。 我的
目前我有这样的方法: private bool IsMyServiceRunning(string serviceName) { if (String.IsNullOr
您好,我正在尝试通过 .NET 应用程序启动/停止/禁用 Windows 服务,但我似乎无法让下面的代码正常工作,它一直说错误 4 error C2065: 'ServiceController' :
正如标题所说,我试图启动一个在运行时创建的服务,但我总是以“超时”异常告终,因为服务状态不会更改为“正在运行”并且永远卡在“启动”上。 这是我的 StartService() 函数: private
我有一个由服务和可执行文件组成的应用程序。本质上,它是一个表单应用程序,负责在特定情况下启动和停止服务。 在 Windows XP 上,应用程序使用以下代码很好地管理此问题: ServiceContr
我有一个由两个服务组成的 Windows 服务项目,service1 和 service2。我们如何在这两个服务之间进行通信?例如,我们如何让 service1 启动 service2?我可以使用 S
我有一个由服务和可执行文件组成的应用程序。本质上,它是一个表单应用程序,负责在特定情况下启动和停止服务。 在 Windows XP 上,应用程序使用以下代码很好地管理此问题: ServiceContr
我是一名优秀的程序员,十分优秀!