无法在计算机上打开MSDTC服务。访问被拒绝

时间:2012-05-18 14:12:10

标签: c# .net service permissions

我正在尝试验证我的用户是否有权控制MSDTC服务,以便在关闭时可以启动它。实际上,第一步是验证它是否已经启动,并且启动它并不是至关重要的。 该应用程序使用.Net 4.0,因此在新的安全模型下运行。

以下代码在使用具有所需权限的用户运行时有效,但对普通用户(非管理员)的Stop()方法失败:

     var permission = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, Environment.MachineName, "MSDTC");
     permission.Demand();  // Is this even considered in .Net 4.0?

     var MSDTC = new ServiceController("MSDTC", Environment.MachineName);
     MSDTC.Stop();   // Crashes with "Access is denied" for an ordinary user.
     MSDTC.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(10));
     MSDTC.Start();

所以,我的问题是如何验证用户是否具有运行操作所需的权限?一般情况下,我如何检查其他资源,如寄存器等?

我已经找了很多解决方案,但没找到任何东西。当然,我已经阅读了有关新安全模型的MSDN文档,但没有找到我可以在这种情况下使用的任何内容。

0 个答案:

没有答案